【问题标题】:Random do not use rand() function in C [closed]随机不要在 C 中使用 rand() 函数 [关闭]
【发布时间】:2017-04-10 21:45:17
【问题描述】:

我需要在不使用 random 函数的情况下生成一个随机数。我使用 system.nanotime 在 Java 中制作了它,但我不能在 C 中制作。我该怎么做?

【问题讨论】:

  • /dev/urandom获取随机字节?如果您解释了为什么您无法使用 random().... 可能会有所帮助。
  • time() ^ getpid() 是一个开始。你的操作系统是什么?,它需要有多随机?也许发布您的“我使用 system.nanotime 在 Java 中制作的”以了解您想要什么?你需要真正随机还是伪随机OK?
  • 我的操作系统是windows,我需要伪随机
  • 也许你应该使用 Windows 自己的CryptGenRandom()?在 Windows 的某些(旧)化身中存在错误版本(请参阅The Register,所以要小心,但使用它会为您节省很多麻烦。OTOH,它可能超出您的需要;它是加密的随机,您可能不需要那么多随机性(如果纳秒计数器足够随机,您可能不需要加密随机性)。
  • PRNG 算法有数百种。选择一个并实施你自己的。从简单的事情开始,比如 Marsaglia XorShift。

标签: c random time


【解决方案1】:

查看标准标题:http://en.cppreference.com/w/c/chrono

此外,Unix 系统具有特殊的 /dev/random/dev/urandom 文件,您可以通过调用 int system(const char *string) 来使用它们。例如,您可以将/dev/urandom 中的一些随机字节写入文件(即system("cat /dev/urandom | head -n 1 > random_bytes.bin"); 并从random_bytes.bin 中读取随机数据。

见:

【讨论】:

    【解决方案2】:

    您可以将任何随机生成器库添加到您的代码中。

    Meresenne twister 很棒

    Here你可以找到很多.c .cpp .h文件

    【讨论】:

    • @chux 对不起,是的
    猜你喜欢
    • 2015-09-29
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多