//首先掷骰子需要概率相等,如果随机数生成0到32767,那么这些值的概率就不是相等的,32766,32767返回的值是0,1会增加概率
//所以,一旦出现就重新生成.
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <time.h>
const unsigned int MAX_OK_RAND = (RAND_MAX/6)*6-1;//(int)((((long)RAND_MAX+1)/6)*6-1);
int throw_die(){
static int flag = 0;
int value;
if (!flag)
{
flag = 1;
srand((unsigned int)time(NULL));
}
while((value = rand())>MAX_OK_RAND);
return value%6+1;
}
int main(){
int a[100];
//int v = MAX_OK_RAND;
int i = -1;
while(++i<100){
a[i] = throw_die();
}
return EXIT_SUCCESS;
}
利用随机数函数掷骰子
最新推荐文章于 2024-03-21 17:51:33 发布
本文介绍了一种确保随机数生成均匀分布的方法,特别是在掷骰子等需要概率相等的应用场景中。通过调整最大允许随机数,避免了某些值被过度选择的问题,并提供了完整的C语言实现代码。
1734

被折叠的 条评论
为什么被折叠?



