⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prob.c

📁 这是一个神经网络开发包。目录ann下是专门针对神经网络的代码
💻 C
字号:
/*
 * public/prob.c
 * 2004-04-25 by ShanLanshan
 *
 * probability library
 */
#include <time.h>
#include <stdlib.h>
#include <assert.h>
#include "public/prob.h"

/*
 * prob_set_seed
 * set random seed
 * -1 for random seed
 */
void prob_set_seed(unsigned int seed)
{
	if (seed == 0)
		seed = (unsigned int)time(NULL);

	printf("Set random seed [%d]\n", seed);
	srand(seed);
}

/*
 * prob_get_number
 * get random number from 0 to 0xffffffff
 */
unsigned int prob_get_number()
{
	return rand();
	/*
	register unsigned int ret;

	ret = rand();
	ret <<= 15;
	ret &= rand();
	ret ^= (rand() % 4) << 30;

	return ret;
	*/
}

/*
 * prob_get_range
 * get a random number in appointed range
 */
int prob_get_range(int start, int to)
{
	assert(to >= start);
	return  start + (prob_get_number() % (to - start + 1));
}

/*
 * prob_check
 * check probablilty in power / base
 *
 * Return:
 * 	1 if probablity happened, else return 0
 */
#define PROB_CHECK(n, b, p) (((n) % (b)) < (p))
int prob_check(unsigned int power, unsigned int base)
{
	return PROB_CHECK(prob_get_number(), base, power);
}

/*
 * prob_select
 * select in array, the probability depends on the array element's value
 *
 * Return:
 * 	return the selected array element index
 */
int prob_select(unsigned int a[], int len)
{
	int i;
	unsigned int all;
	unsigned int n;

	assert(a != NULL);
	assert(len > 0);

	for (i=all=0; i<len; all+=a[i++]);

	n = prob_get_number();
	--len;
	for (i=0; i<len; ++i) {
		if (PROB_CHECK(n, a[i], all))
			return i;
		all -= a[i];
	}

	return i;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -