说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

请问:怎样产生出现概率不同的随机数?

编辑:说三道四文库 发布时间:2018-06-22 12:00
HTML文档下载 WORD文档下载 PDF文档下载
我是一个初学编程者,有一个问题一直想不出解决的办法,在此向各位老师请教:
在某一区间的随机数函数产生的数是不是等概率的?如果让这些数出现概率不等,怎么样实现?
随机库函数得到的随机数应该是等概率的,要得到概率不等的函数可以再用一个函数(根据你的要求)调用它:如sqr(rand())
先用srand()为rand()函数撒种子,这样rand()的值肯定不同,这在《c语言程序设计》(机械工业出版社),中有详细介绍。
先用srand()为rand()函数撒种子,这样rand()的值肯定不同,这在《c语言程序设计》(机械工业出版社),中有详细介绍。
设置随机种子。最要拿当前时间作为随机种子。
不好意思,什么是随机种子?如果已经有了各个数的出现概率,怎么按它们概率产生随机数?
任意时间的函数time(NULL)的值一定不同,使用它做种子产生的随机数一定不同。
如:
 srand(time(NULL));
 int a=rand();

头文件有包含stdlib.h
srand((unsigned)time(NULL));
rand();
撒下不同的随机数种子,
但若你你连续执行,会发现变化有点规律,因为这是以时间为种子的
只要不连续产生,就没这问题

你也可以通过灵活的数学方法或>>,<<  等操作产生不同的随机数

产生概率不同的随机数,可以再用一系列函数调用来实现:

比如要产生一个这样的: 1-30% 2-20% 3-50%
可以这么做: 
a=rand()%10;
if(a<3) b=1;
else if(a==3||a==4) b=2;
else b=3;
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘