阅读全文,为Catan玩家找到一份礼物。
有哪些随机的东西?
- 死卷
- 从经过改组的牌组中选择一张卡
- 这个连结
有哪些不是随机的东西?
- 3 + 2
- 单词的定义
- 水的沸点
计算机真的很擅长按照说明进行操作。 他们将为我们做复杂的数学运算。 他们将为我们创建表格。 他们将为我们制作游戏。 对于所有这些任务,计算机都需要清晰,详细的分步说明。 一个缺少的分号可以阻止一百万行代码的执行。
我们都去过那里。 并且计算机遵循非常精确的指令并产生非常精确的可预测结果。
放置“ Hello World!” =>“世界您好!” #这不是随机的
#计算机不会随机输出“我在吃冰淇淋”
由于计算机非常依赖清晰准确的指令,因此实际上很难生成随机数。
- 液化天然气
或伪随机数生成器
顾名思义,这些数字似乎是随机的,但不是。 PRNG使用数学公式和预先计算的列表进行计算。 一种PRNG是线性同余发生器或LCG。 “这是一种算法,该算法可产生使用不连续分段线性方程式计算的伪随机数序列。” — Wikipedia


PRNG的工作类似于人类反复滚动骰子并在列表中每次写下结果。 因此,当要求计算机提供1-6之间的随机数时,它仅返回列表中的下一项。
PRNG的一个优点是可以重新创建返回的“随机”数字序列-您可以通过滚动模具再次找到列表。 这使得PRNG非常适合建模,仿真和测试。 它们生成速度快,并且可以根据需要重复进行。 同样,与任何人工创建的列表一样,PRNG创建的序列也是有限的。 但是,出于所有目的和目的,它们都通过了所有统计检验,并且具有离散的均匀分布。
从某种意义上说,PRNG并不是真正随机的,因此具有确定性。 计算机知道下一个“随机”数字将是什么。 这使得PRNG对于加密,彩票或游戏的用处较小。
2. TRNG
或TrueRandom数字生成器
现在,这就像一台计算机伸出来,抓住一个骰子并滚动它一样。
但是计算机没有武器。 因此,它利用了它的感觉。 像麦克风。
为了生成TRNG,计算机可以监听周围的背景噪声,查看噪声的频率并从这些频率中提取数字。 本质上,水冷式八卦被转换成随机数。

计算机可以接收的其他外部随机输入是击键,鼠标移动和像素十六进制数之间经过的时间。
让我们看看两次按键之间经过的时间。 计算机将记录两次按键之间的时间,例如:0.237485610864秒。 现在,它将提取第7个小数,并将其作为随机数返回-在这种情况下为6。
这种方法对数据加密更有用,因为这些随机数的来源确实是随机的,就像人类打字速度或背景和大气噪声是随机的一样。 TRNG用于彩票和赌博游戏。
TRNG的缺点包括需要更长的时间才能生成随机数。 另外,必须仔细选择TRNG的来源。 笔记本电脑风扇的不断旋转可能会扭曲结果的随机性,因为它本身是相对恒定的。 这已导致程序员和科学家使用诸如放射性衰变之类的信号源-这是非常随机的。
所以下次您看下面的代码
rand(1..10)#or 1 + rand(10)
知道放射性衰变,办公室闲话和线性同余生成器会返回1到10之间的随机数。
我喜欢玩Catan。
一个大问题是弄清楚谁拥有骰子,并让该玩家及时将其传递给下一个骰子。 然后,您偶尔会有过度热情的掷骰子,从盒子里跳出来,撞倒房屋,城市和道路。
再也不。
立即尝试您的笔记本电脑!
虚拟骰子卷。 结果与掷骰子相同。 两个模具编号的加法已为您完成!
仔细执行以下步骤。
仅适用于Mac用户🙁
- 单击屏幕右上角的放大镜,也称为“聚光灯搜索”。
- 在搜索栏中,键入“ terminal”,然后按Enter。 您应该会看到一个打开的白色窗口。
- 输入“ irb”,然后按Enter。 您应该会看到类似这样的内容。

4.现在,将以下代码复制并粘贴到终端中,然后按Enter。
def diceputs“欢迎Catan玩家:” puts“多少名玩家?”
user_players = gets.chomp
而!user_players.to_i.between?(2,6)
放置“错误-请选择2到6之间的数字”
user_players = gets.chomp
endputs“命中输入或键入'quit'”
user_input = gets.chomp
player_num = 1
而user_input!=“退出”
x = 1 +兰德(6)
y = 1 + rand(6)
总计= x + y
如果总数== 7
将“玩家#{player_num}掷出#{total}。移动强盗!”
其他
将“玩家#{player_num}掷出#{total}”。
endif player_num == user_players.to_i
player_num = 0
结束
player_num + = 1
user_input = gets.chomp
结束语“感谢您的游戏和学习!”结束
5.键入“骰子”,然后按Enter。
每次您按下Enter键时,程序都会返回两个介于1和6之间的随机数之和,模拟两个骰子掷骰。
不再需要越过骰子或翻倒城市或道路。
输入“ quit”以退出程序。