惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
Microsoft Security Blog
Microsoft Security Blog
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
罗磊的独立博客
腾讯CDC
云风的 BLOG
云风的 BLOG
月光博客
月光博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
U
Unit 42
I
InfoQ
D
DataBreaches.Net
Blog — PlanetScale
Blog — PlanetScale
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
美团技术团队
IT之家
IT之家
Stack Overflow Blog
Stack Overflow Blog
F
Fortinet All Blogs
GbyAI
GbyAI
S
SegmentFault 最新的问题

机核

游戏性能旗舰最强之选,一加 Ace 6 至尊版国补到手价2999元起 6元钱自己更换电动车刹车线 《生化危机9:安魂曲》编剧Haris Orkin专访 摸金游戏?音乐游戏!暗区新赛季这把能弹的琴有何来历? 好评国产武侠SRPG《息风谷战略》免费DLC现已推出 | 机核 GCORES 碎片 《生化危机:安魂曲》将于5月实装首个免费更新内容 | 机核 GCORES 新锐东方游戏,谱写世界新章! 沉浸式恋爱视觉小说游戏《心象演算》免费试玩版现已正式上线 | 机核 GCORES 互动影游《代号三国:龙起》上线!穿越三国与曹操并肩、与佳人同行、与权谋博弈! 《老头收集梦想生活》,游戏酒桌会6,录音笔VOL.689 | 机核 GCORES 破界·共生——《白日梦:无限世界》五大核心游戏特点解析 价格已到史低,锐龙5 9600X/锐龙7 9700X正适合抄底 时间循环之旅即刻启程!《归环》一周目测试今日开启 热门在线韩游变魂游,洛奇衍生作能否打破“花瓶”魔咒? LG UltraGear evo 全新高端显示器系列:当“5K”遇见“AI”,不止强大,更懂热爱 反套路三国互动影游《代号三国:龙起》今日上线! 愿望单登记人数突破10万!备受瞩目的“女儿养成游戏” 《梦幻魔法公主》今日于Steam平台上线!限时八折优惠中 《黑神话:悟空》全球音乐会2026巡演将于4月29日12时开票 | 机核 GCORES “Snowguelike”生存肉鸽挖矿新作《蛙穿雪境》公布发售日期,5月7日正式上线 | 机核 GCORES 重塑移动办公、AI创作新境!全新华硕灵耀Air系列、ProArt 骁龙版震撼首发,创芯未来 均分88:《Saros》媒体评分汇总 | 机核 GCORES 上海烛龙公布合作遗迹探险游戏《吉时已到》首支预告片 | 机核 GCORES 首个独立游戏《萝薇日记》已上线Steam! 烛龙新IP《吉时已到》首曝,打造国内首款中式合作遗迹探险游戏 喜加一:《暗黑破坏神Ⅳ》国服现已开启限时免费领取本体活动 | 机核 GCORES 新版《生化危机》电影定于9月18日上映,官方网站现已上线 | 机核 GCORES 《冲就完事模拟器2》“星球大战”联动DLC正式宣布 | 机核 GCORES SteamController将于5月4日发售,售价99美元 | 机核 GCORES 事已至此,内存这么用也算省钱了,“2+1”非对称双通道应用实测
真随机数和伪随机数
jch3601212 · 2024-03-05 · via 机核

在游戏开发中,随机数生成器(Random Number Generator, RNG)是一个非常重要的组件,用于创建各种随机性的元素,包括但不限于:地图生成:在一些游戏中,地图是动态生成的,随机数生成器可以用来确定地形、地貌、资源分布等,以确保每次游戏的地图都是独一无二的。敌人生成:游戏中的敌人、怪物或者其他对手的位置、属性、行为等可以通过随机数来决定,使得每次游戏的对战体验都有所不同。

物品掉落:在角色扮演游戏(RPG)等类型的游戏中,随机数生成器可以用来决定敌人掉落的物品、装备等,增加游戏的可玩性和挑战性。事件触发:一些游戏中会有各种随机事件发生,如天气变化、特殊事件触发等,随机数生成器可以决定这些事件何时发生以及具体的效果。玩家体验:随机数也可以用来增加玩家的体验多样性,比如在一些游戏中,NPC 的对话内容、交易价格等可以通过随机数生成,使得每次游戏的交互都有所不同。在实际应用中,可以使用两种类型的随机数生成器:真随机数生成器和伪随机数生成器。

真随机数生成器(TRNG):真随机数是通过物理过程生成的,比如量子现象、热噪声等。TRNG 通常基于硬件设备,如硬件随机数发生器(HRNG),其输出结果是完全不可预测的,并且在理论上是不可重复的。

伪随机数生成器(PRNG):伪随机数是通过算法生成的,其输出结果是由初始种子(seed)确定的,因此在给定相同的种子的情况下,PRNG 会产生相同的序列。虽然伪随机数并不是真正的随机数,但在大多数情况下,它们足够随机以满足游戏开发的需求。

在实际开发中,开发者需要根据游戏的需求和性能要求选择合适的随机数生成器。例如,在对安全性要求较高的游戏中,可以选择使用硬件随机数生成器;而对于大多数普通游戏,伪随机数生成器通常是更常见的选择,因为它们易于实现并且能够提供足够的随机性。

伪随机数的实现比较简单

Python 中的 random 模块使用的是伪随机数生成器(PRNG),主要基于梅森旋转算法(Mersenne Twister)。

梅森旋转算法是一种高质量的伪随机数生成器,它在生成随机数时具有良好的性能和统计特性。该算法的原理如下:

  1. 种子生成:在使用随机数生成器之前,需要提供一个种子(seed),它可以是任何整数。如果不指定种子,默认使用当前系统时间作为种子,这样可以保证每次运行程序时,生成的随机数序列都是不同的。

  2. 伪随机数生成:一旦有了种子,随机数生成器就会根据该种子按照特定的算法生成一个随机数序列。梅森旋转算法采用了一个长周期(2^19937 - 1)的线性同余发生器,该算法的周期非常长,意味着在不重复的情况下可以生成大量的随机数。

  3. 随机数提取:在需要随机数的时候,随机数生成器会从生成的随机数序列中提取一个随机数返回。每次提取都会影响下一次的结果,因此每个随机数都是独立且随机的。

需要注意的是,由于梅森旋转算法是确定性的,因此在给定相同的种子的情况下,生成的随机数序列是相同的。这在某些情况下可能是有用的,例如在调试时需要重现问题。但在一般情况下,为了确保随机性,建议使用不同的种子。

总的来说,Python 中的 random 模块提供了一个方便而高效的工具,用于生成各种类型的随机数,基于梅森旋转算法的伪随机数生成器保证了生成的随机数具有良好的质量和统计特性。

很多伪随机数发生器的种子会取系统时间,也怪不得会在网上看到一些说法:例如每天什么时刻在游戏地图的哪个地方做装备,出极品概率高,哈哈。

真随机数发生器的实现则需要借助特定的芯片。如果是高端服务器,则会在服务器的CPU内置真随机数发生器,真随机数发生器通过集成电路内部专门设计的TRNG电路,采集芯片内晶体管的热噪声、或者使用混沌电路、还可以使用数字电路的亚稳态现象来产生真随机数。这些现象目前还不存在被建模的可能,没这个能力。。。

如果是一般的服务器,或者个人电脑想要使用真随机数发生器,就需要借助外置的使用专用TRNG芯片的硬件真随机数发生器设备了。有USB接口的也有PCIE接口的,这个取决于你需要多快的速度,一般USB接口的最多也能到240M比特每秒的速度,对于一般的游戏应用完全够了。别问我为什么知道,因为我就是做真随机数发生器芯片的,哈哈哈哈。