18新利最新登入一个完全合乎逻辑的机器怎么能像计算机生成一个随机数?

一个图像0和1的数字数据。”width=
计算机编程是一个多样化的主题。安德烈Onufriyenko /盖蒂图片社

有两种方法,电脑可以生成随机数:

您可以创建某种设备,监控一个完全随机的自然事件,并将其结果发送到计算机。例如,你可以将一张放射性物质的盖革计数器和连接盖革与一台电脑。自放射性衰变是随机的,盖革计数器将创建真正的随机数。这种方法是很罕见的,因为没有多少人有盖革计数器连接到他们的机器。您可以创建一个公式,生成一个伪随机号码。在设计配方时,它产生一串数字,会随机的人并不知道这个公式是什么。一个好的公式的特征包括:

广告

  • 没有重复:序列不循环,重演。良好的数值分布:如果公式产生随机数字0到9之间,0,,2等,生产应该在很长一段时间大致相等。缺乏可预测性:你没有办法预知下一个数将除非你知道公式和种子(初始值)。

这里有一个例子的一个简单的随机数公式书“C编程语言,”克尼汉和里奇:

int rand () {random_seed = random_seed * 1103515245 + 12345;返回(unsigned int) (random_seed / 65536) % 32768;}

这个公式假定一个变量的存在random_seed,这是最初设置为一些。random_seed变量乘以1103515245,然后12345添加到产品;random_seed然后取代了这种新的价值。这实际上是一个相当不错的伪随机数生成器。它有一个良好的分布和无重复。如果你用它来产生随机数字0到9,这是前20的值产生如果种子10:

44607423505664567674

如果你有它产生10000值介于0到9,这是地理分布:

0 - 10151 - 10242 - 10483 - 9964 - 9885 - 10016 - 9967 - 10068 - 9659 - 961

依赖于任何伪随机数公式种子值启动序列。如果你开始使用相同的种子,你就会得到相同的序列值的公式。如果你给的rand ()功能上面的种子1018新利最新登入电脑看看流产生的数字,这将是相同的数字产生任何计算机上运行它的种子10。在的情况下全球定位系统,这种再现性是用来给每个卫星可预测但不同模式的价值观,GPS接收器可以跟踪。

创建一个随机的和不可预测的序列,种子必须是一个真正的随机数。这真正的随机数种子,大部分程序使用当前的日期和时间转换为一个整数值(例如,转换为自1月1日以来经过的秒数,1970)。因为这是一个不同的数字每次你启动程序,它使一个好的种子。

对计算机和编程的更18luck手机登录多信息,见下一页。

广告

经常回答问题

谷歌有一个随机数字生成器吗?
是的,谷歌有一个随机数发生器。

广告

加载……
Baidu