随机数生成器源代码(系统随机数生成代码)[20240420更新]
admin 发布:2024-04-20 14:59 112
本篇文章给大家谈谈随机数生成器源代码,以及系统随机数生成代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
vb 随机数的生成?
简单一点就是:
a=int((b*rnd+1)+c)
a为生成的随机数,b,c为自己设置范围的数,例如:b=0,c=100,即产生的随机数a范围在0~100之间.可根据需要设置.
用人脑生成等概率随机数,困扰人类30万年的问题解决了 | 附代码
让人类随机说出一个1-10之间的整数(包括1和10),每个数字被选中的概率都是10%吗?答案当然是否定的。
半年前,有人对8500名学生做了一项调查,发现人类似乎对7有种特殊的偏好,有接近3成的人会选择“7”,而选择两端数字的概率会偏小,选“10”人甚至仅有1.9%。
如果用计算机,我们就可以生成近乎完全随机的数,保证每个数被抽中的概率都是10%。(注:其实计算机生成的是伪随机数,并不完全随机,但效果远胜过人类。)
在这件看似超级简单的事情上,人脑输给了电脑。 人类随机函数 human.random远不及Numpy里的np.random啊。
难怪有Twitter网友会调侃:智人诞生30多万年以来就没能解决这个问题。
因为人类是有 情感 的:1和10分别位于两端,选择这样两个数是否会太刻意?7是不是我的幸运数字?潜意识里的想法都会左右你最终的选择。
那该怎么办?
怎么才能把人类随机函数变成真正的随机函数,要做的就是把概率分布大于10%的数挪到概率小于10%的数上。
你可以想象成切碎这些长条并重新排列,让它们都一样高:
举一个极端的例子,假设我们将每个长条都“切割”成无限小的块,然后就可以像乐高一样使用这些块来建立任何形状的概率分布。
现在,我们来定义这样一个变量 x i,j ,它表示我们把数字 i 调整到数字 j 的样本占数字i总样本中的比例。
因为选7的人比较多,我们希望把部分7调整到1,如果把20%的7变成1,那么x 7,1 =0.2。x i,i 表示自身不调整的部分。
最后我们希望所有随机数的概率都是0.1,所以其他数字调整进j的比例之和应该满足:
同时,我们还必须确保原始分布中的所有概率质量(probability mass)都是守恒的。所以每个i调整到1到10的总概率应该等于1(注:原文如此,应等于原本选择数字i的概率P i )。
另外,我们还希望尽可能保留原始的分布,也就是让x i,i (保持不动的部分)之和最大,即不调整的部分尽可能多。
现在这个问题就变成了一个 线性规划 问题,在这20个约束条件下,令对角元素之和最大。
经过电脑计算后,调整方案是这样的:
这个结果虽然直观却不够精确,准确的调整比例为:
按照上面的图表,选7的结果中有28%的比例需要调整为10,20%的比例需要调整为1,等等。
但是这28%、20%的比例如何获得,最初的随机分布表就可以啊。
本来就有28%的人选择7,如果我们获得了一个7,在问第二个人,如果也得到一个7,我们就把第一个7强制转换成1。
人脑随机数生成器
现在你明白人类随机数生成器的工作原理了,下面就是这套程序的“源代码
按照这个程序,你应该能得到一个接近平均的从1到10的随机数发生器,前提是你得有8500个人。
以上算法的思路和代码和源代码来自博客:
C语言怎样产生一定范围的随机数?
编译环境为:vs2013
产生1到3的整型随机数的代码如下:
#includestdio.h
#includetime.h
#includestdlib.h
#define max 3 //这个函数的意义为:随机生成最大的数为3
#define min 1 //这个函数的意义为:随机生成最小的数为1
int main()
{
int num;
srand(time(0));
num = rand() % (max - min) + min; // 这里的意义,“%”为模运算
printf("随机数为:%d\n", num);
system("pause"); //这个代码可以让弹出的黑框不会一下就消失
return 0;
}
扩展资料:
根据密码学原理,随机数的随机性检验可以分为三个标准:
条件一、统计学伪随机性。统计学伪随机性指的是在给定的随机比特流样本中,1的数量大致等于0的数量,同理,“10”“01”“00”“11”四者数量大致相等。类似的标准被称为统计学随机性。满足这类要求的数字在人类“一眼看上去”是随机的。
条件二、密码学安全伪随机性。其定义为,给定随机样本的一部分和随机算法,不能有效的演算出随机样本的剩余部分。
条件三、真随机性。其定义为随机样本不可重现。实际上只要给定边界条件,真随机数并不存在,可是如果产生一个真随机数样本的边界条件十分复杂且难以捕捉(比如计算机当地的本底辐射波动值),可以认为用这个方法演算出来了真随机数。
随机数分为三类:
①伪随机数:满足第一个条件的随机数。
②密码学安全的伪随机数:同时满足前两个条件的随机数。可以通过密码学安全伪随机数生成器
计算得出。
③真随机数:同时满足三个条件的随机数。
随机数生成器源代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于系统随机数生成代码、随机数生成器源代码的信息别忘了在本站进行查找喔。
版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;
相关推荐
- 05-03织梦首页下一页代码(织梦搜索框代码)[20240503更新]
- 05-03微信二维码源代码(微信二维码源代码怎么弄)[20240503更新]
- 05-03打印机监控源代码(打印机监控源代码怎么看)[20240503更新]
- 05-03网页切换图片代码(网页图片切换怎么做)[20240503更新]
- 05-03jquery网站代码(jquery操作html代码)[20240503更新]
- 05-03matlab代码自动排版(matlab自动排版快捷键)[20240503更新]
- 05-03点击图片翻页代码(图片自动翻页)[20240503更新]
- 05-03新闻发布平台源代码(新闻app源码)[20240503更新]
- 05-03matlab锐化代码(matlab自己编写锐化函数)[20240503更新]
- 05-03ios仿途牛app源代码(牛牛app源码)[20240503更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接