为什么lua中的某些平台第一个随机数总是相同?

2023-11-24

考虑以下 lua 代码片段:

local time = os.time()
for _= 1, 10 do
    time = time + 1
    print('Seeding with ' .. time)
    math.randomseed(time)
    for i = 1, 5 do
        print('\t' .. math.random(100))
    end
end

在 Linux 机器上,正如预期的那样,结果是随机数。但似乎至少在Mac OS X上,改变种子后的第一个随机数总是相同的!

我想这与 Lua 依赖 C rand() 函数来生成随机数有关,但是有人有解释吗?

编辑:这里是上述代码在 Linux 机器上的输出摘录(即输出符合预期):

$ lua test.lua
Seeding with 1232472273
    69
    30
    83
    59
    84
Seeding with 1232472274
    5
    21
    63
    91
    27
[...]

在 OS X 机器上,“播种...”之后的第一个数字始终是 66。


Lua的随机使用C的rand(3) and srand(3)功能 (see here)。更新:较新的 Lua 版本在可用的情况下使用 random(3).

C90 标准和 POSIX 都建议跨平台实现rand and srand那不是最好的。它尤其缺乏低位的随机性。

一些平台(例如 Linux)放弃了标准建议,转而采用更好的实现方式(例如随机(3)).

OS/X 依然忠于经典rand实现,Lua 继承它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么lua中的某些平台第一个随机数总是相同? 的相关文章

  • Lua userdata:无法同时进行数组访问和方法

    我遇到了这个人的问题 Lua userdata数组访问及方法 https stackoverflow com questions 26970316 lua userdata array access and methods 其中 当我设置用
  • 为什么 C++ 中的 rand() 函数不是真正随机的

    我制作了非常简单的随机函数 并将结果保存在文件中 我使用该程序创建了两个不同的文件 并且它们中的信息完全相同 为什么会发生这种情况 这是我的简单程序 include
  • 如何为每个分组元素选择随机的非连续日期?

    我目前正在尝试为每个分组列选择非连续日期 换句话说 我有以下数据框 我基本上想group by Site 然后为每个分组站点仅保留 3 个随机非连续日期 例如 如果 HP37P1B 的日期对应于 3 月 12 日 3 月 13 日 3 月
  • Lua中如何获取表中的最大整数?

    Lua中如何获取表中的最大整数 在Lua 5 1及更早版本中 你可以使用 math max unpack 1 2 3 4 5 这受到Lua堆栈大小的限制 在 PUC Lua 5 1 上 该值的最大值可达 ca 8000 个数字 如果堆栈空闲
  • delphi中生成随机数

    我想在delphi中创建一个随机数并将其分配给文件作为文件名 我设法做到了这一点 但是当我单击按钮生成数字时 它总是以 0 开头 知道如何修复它 procedure TForm1 Button1Click Sender TObject va
  • Python - randrange() 的空范围 (0,0, 0) 和 ValueError("randrange() 的空范围 (%d,%d, %d)" % (istart, istop, width))

    当我运行这个程序时 python 3 3 1 import random import time from random import randrange print print I am thinking of a person time
  • 使用 FastCGI 运行 Lua 脚本

    我目前正在尝试找出使用 FastCGI 与 lighttpd 或 Nginx 一起运行 Lua 脚本的方法 我唯一能挖到的是WSAPI http keplerproject github com wsapi 开普勒计划的一部分 但我想知道是
  • Lua中如何在另一个表的表成员中搜索

    我正在编写一个 lua 程序 它有一个表 该表是另一个表的成员 当我向该成员表添加新日期时 一切正常 但是 当我想在该表中搜索时 无论我给出什么键 我总是会将最后一行添加到表中 如何在该成员表中正确搜索 Stream name functi
  • 尝试让 GUI 使用 arrayList 在牌组中打印随机卡

    所以我目前正在用java开发一个卡牌战争游戏 我试图让 GUI 屏幕使用 arrayList 从一组卡片图像中打印 2 张随机卡片 必须使用它进行分配 卡片图像文件名为 1 png 2 png 52 png 并存储在 image card
  • 随机数生成器每次仅返回一个数字

    Python 是否有一个随机数生成器 每次只返回一个随机整数next 函数被调用 数字不应该重复并且生成器应返回区间内的随机整数 1 1 000 000 这是独一无二的 我需要生成超过一百万个不同的数字 这听起来好像非常消耗内存 以防所有数
  • perl生成字符串来匹配正则表达式

    我尝试找到一种方法来生成与正则表达式匹配的字符串 例如以下正则表达式 A Z 6 6 A Z2 9 A NP Z0 9 A Z0 9 3 3 0 1 我尝试过 Cpan 上的一些 perl 模块不起作用 gt 字符串 随机 gt 正则表达式
  • 安装Lua套接字库

    要么我太累了 要么我瞎了 我想学习 Lua 网络 因此我必须安装socketlib 所以我可以轻松地要求它 但我不知道我应该 要求 哪些文件 例子说 local socket require socket 但正如我所说 如果我使用 我不知道
  • 使用 Easy 68K (68000) 组装范围内的随机数

    我正在使用 Easy 68K 模拟器创建一个简单的黑杰克游戏 需要使用随机数来分配牌 我的牌必须在 2 到 11 的范围内 我似乎每次都得到相同的数字 但它不在我预期的范围内 我的卡值需要以 D3 结束 因此我有以下随机数代码 CLR L
  • Lua 将字符串转换为数字 - 取决于语言环境

    刚刚注意到字符串 and tonumber 在 Lua 中是依赖于语言环境的 知道如何在不使用的情况下将字符串转换为数字tonumber 谢谢 例如将字符串 58 5 转换为 58 5 另外 当我尝试将带点的数字传递给函数时 该函数会转换
  • 如何生成随机凸多边形?

    我正在尝试设计一种生成随机二维凸多边形的方法 它必须具有以下属性 坐标应该是整数 多边形应位于角为 0 0 和 C C 的正方形内 其中 C 已给出 多边形的顶点数量应接近给定数量 N 例如 生成具有 10 个顶点并位于正方形 0 100
  • “在 arraylist 构造函数中找不到 add(java.lang.String) 合适的方法”?

    import java util ArrayList import java util Random public class College instance variables replace the example below wit
  • Lua 访问表的键和值

    我想在关卡编辑器中读取 Lua 文件 这样我就可以以可视化格式显示其数据供用户编辑 如果我有一个像这样的 Lua 表 properties Speed 10 TurnSpeed 5 Speed显然是关键并且10价值 我知道如果我知道像这样的
  • 如何获取numpy.random.choice的索引? - Python

    是否可以修改 numpy random choice 函数以使其返回所选元素的索引 基本上 我想创建一个列表并随机选择元素而不进行替换 import numpy as np gt gt gt a 1 4 1 3 3 2 1 4 gt gt
  • 在 C# 中创建加密随机数的最快、线程安全的方法?

    请注意 在多个线程上并行生成随机数时 加密随机数生成器不是线程安全的 使用的发电机是RNGCryptoServiceProvider它似乎重复了很长一段随机位 128 位 重现此情况的代码如下所示 缺乏使用锁来保护访问RNGCryptoSe
  • 在 Awesome-wm 中为特定应用程序设置窗口布局

    如何配置很棒 以便它可以启动两个窗口对齐的新应用程序 如下所示 xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx 其中 x 是 pidgin 中的对话窗口 是好友列表窗口 一般来说 我想指定右窗口的宽度

随机推荐

  • 先有鸡还是先有蛋的问题:文件的哈希值(包括文件内的哈希值)!可能的?

    问题是我有一个有元数据空间的文件 我想在其中存储用于完整性验证的哈希值 问题是 一旦我存储了哈希值 文件和哈希值就会随之改变 我完全理解 根据定义 使用 md5 sha 等单向加密哈希方法是不可能的 我还意识到容器可以像 zip co 那样
  • UseShellExecute=false 时无法提升权限

    我想启动一个具有提升权限但具有隐藏窗口的子进程 实际上是相同的控制台应用程序 我接下来做 var info new ProcessStartInfo Assembly GetEntryAssembly Location UseShellEx
  • 如何从文件中读取特定格式的数据?

    我应该从类似于此格式的文件中读取输入和参数 Add id 324 name john name2 doe num1 2009 num2 5 num2 20 问题是我不允许使用 fgets 我尝试使用 fscanf 但不知道如何忽略 并分隔字
  • 无法调用“事件”命令:应用程序已被破坏

    因此 我今天正在调试一些代码 并注意到输出中出现一条新消息 can t invoke event command application has been destroyed while executing event generate w
  • 键盘辞职降低了弹出窗口的高度

    我在 ios 4 3 上遇到了一个奇怪的问题 我的一个屏幕处于横向模式 单击按钮会出现一个弹出窗口 我的弹出窗口有一个搜索栏 每当键盘出现时 它会自动将我的弹出窗口向上推 当我退出键盘时 弹出窗口的高度减小 这只是 ios 4 3 上的问题
  • C++ 类中的函数指针表

    我正在尝试在类中创建一个函数指针表 我在网上找不到任何这样的例子 大多数都涉及在类之外使用成员函数指针 例如 class Test typedef void Test FunctionType FunctionType table 0x10
  • 我可以覆盖 inline !important 吗?

    如果你有 div style display none important div 有没有办法覆盖样式表中的样式以使其显示 最好使用与此类似的东西 div display block important 首先我要说的是一般是内联样式can被
  • std::string 运算符 + 与 stringstream 的性能[重复]

    这个问题在这里已经有答案了 我正在将旧的代码库从使用字符串的自定义实现迁移到使用 std string 我们的一位工程师担心这可能会导致性能问题 因为我们使用 和 来连接相对较长的字符串 他特别关心的是当字符串动态增长时如何分配内存 他建议
  • 背景图片有理想的尺寸吗?

    例如 1x1 图像加载速度会比 2x2 图像加载速度更快吗 尺寸会更小 但浏览器的工作量必须是原来的两倍 对吧 那么 背景图像是否有理想的尺寸和形状 正方形与矩形 我知道这可能不太重要 但我有兴趣知道 谢谢 我认为您的图像没有 理想 尺寸
  • Telerik 控件布局问题 - Visual Studio 2013

    我最近在我的计算机上安装了 Visual Studio 2013 和 2012 我们有几个使用 Telerik 控件的 Web 应用程序 ASP NET 和 MVC 今天 我注意到手风琴控件 扩展器 已完全展开 其中的内容一个又一个地堆叠在
  • [] 和 {} 与 list() 和 dict() 相比,哪个更好? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我知道它们本质上是同一件事 但就风格而言 哪一个用于创建空列表或字典更好 更Pythonic 就速度而言 它与空列表 字典没有竞争 gt gt gt from timeit import
  • Python BigQueryallowLargeResults 与 pandas.io.gbq

    我想使用用于读取 BigQuery 的 Pandas 库数据 如何允许较大的结果 对于非 Pandas BigQuery 交互 可以这样实现this Pandas 的当前代码 sProjectID project id sQuery SEL
  • 使用 ASP.Net 实现多语言网站

    我正在使用 ASP Net 实现一个多语言网站 语言为英语 法语和阿拉伯语 请注意 阿拉伯语的方向是 RTL 实施多语言支持的最佳方式是什么 我计划使用 Net 本地化功能 但网站文本存储在数据库中 对于控件 表单控件 我可以使用 resx
  • 跟踪栏仅在最终值上触发事件,而不会在时间值发生变化时触发事件

    我正在开发一个非常基本的 C Visual Studio 表单应用程序 但在让轨迹栏按照我想要的方式运行时遇到一些问题 因此希望社区中的某个人可以为此提供解决方案 我所拥有的是一个非常基本的应用程序 主要部分是一个值为 0 到 100 的轨
  • 解释 GetKeyState / GetCursorPos 的错误

    有时我会收到客户的错误报告 但我无法解释 在 Delphi 中的 Application Run 之后 我收到以下错误 EOSError System error Code 5 Access denied Call Stack Inform
  • 查找已排序数组中不重复的元素

    资料来源 微软面试问题 是的 您可以使用排序来降低复杂性O log n 通过二分查找 由于数组已排序 因此在缺失元素之前 每个值都占据位置2 k and 2 k 1在数组中 假设从 0 开始索引 所以你转到数组的中间 比如索引h 并检查任一
  • oracle中执行存储过程后是否会发生自动提交?

    我在oracle DB中有3个表 我正在编写一个程序来根据某些条件删除所有 3 个表中的一些行 我在程序中一一使用了所有三个删除语句 在执行上述存储过程时 执行时是否发生自动提交 否则 我是否需要在最后手动编码提交 数据库级别没有自动提交
  • SQL 选择不同的子字符串,就像搞乱了如何

    我有一个表 其中的字段与此类似 ANIMAL FISH 54 FISH 30 DOG 12 CAT 65 CAT 09 BIRD 10 FISH 31 DOG 10 该领域稍后可能会添加新的动物 例如 GOAT 72 DOG 20 我想做的
  • 如何跨模块存储应用程序设置[重复]

    这个问题在这里已经有答案了 我收到了一个离开我们公司的开发人员的项目 不太复杂 但看起来不太好看 所以问题是 应用程序有一些模块 其中一个是存储一些应用程序的 设置 选项 不是所有可能的选项 只说两个 foo and bar 当应用程序启动
  • 为什么lua中的某些平台第一个随机数总是相同?

    考虑以下 lua 代码片段 local time os time for 1 10 do time time 1 print Seeding with time math randomseed time for i 1 5 do print