当前位置: 首页 > 知识库问答 >
问题:

如何在c中生成非常大的随机数

商风华
2023-03-14

我想使用c生成0-2^64范围内的非常大的随机数。我使用了rand()函数,但它没有生成非常大的数字。任何一个都可以帮助吗?

共有3个答案

别烨熠
2023-03-14

我也会考虑使用操作系统工具。所有的现代系统都有密码模块,能够生成任意长度的非常好的随机字节数组。Linux有get随机()。视窗有CryptGenRandom。OpenBSD有arc4随机。iOS有SecRAnywhere CopyBytes。等等。

壤驷敏学
2023-03-14

由于[0,2^64)范围内的均匀随机数只是64个随机位,您可以直接使用std::mt19937_64的返回值:

#include <random>

int main () {
    std::mt19937_64 gen (std::random_device{}());

    std::uint64_t randomNumber = gen();
}

请注意,使用单个32位种子播种梅森扭曲器引擎并不是最佳的,为了获得更好的方法,请看一下这一点。

另请注意,现在通常不鼓励使用rand。以下是Stephan T. Lavavej关于该主题的演讲。

能正青
2023-03-14

对于c 11,使用c 11的标准随机库,您可以这样做:

#include <iostream>
#include <random>

int main()
{
  /* Seed */
  std::random_device rd;

  /* Random number generator */
  std::default_random_engine generator(rd());

  /* Distribution on which to apply the generator */
  std::uniform_int_distribution<long long unsigned> distribution(0,0xFFFFFFFFFFFFFFFF);

  for (int i = 0; i < 10; i++) {
      std::cout << distribution(generator) << std::endl;
  }

  return 0;
}

现场演示

 类似资料:
  • 问题内容: 我们如何在Java中生成非常大的随机数?我说的是10000位数吗?我知道我们必须使用BigInteger,但是我们该怎么做呢?做这样的事情最有效的方法是什么?请提供一个小例子。谢谢。 问题答案: 嗯,一种方法是转到Random.org并下载二进制随机文件之一。这些文件是由大气噪声生成的,因此非常随机。我在国际象棋引擎中将其用于Zobrist键。 或者你可以去 这会给你你想要的。在此示例

  • 我想用骰子做一个游戏,我需要在其中加入随机数(以模拟骰子的侧面。我知道如何在1到6之间进行)。使用 不能很好地工作,因为当我运行程序几次时,我得到的输出是: 所以我想要一个每次都会生成不同随机数的命令,而不是连续5次生成相同的随机数。是否有命令可以执行此操作?

  • 本文向大家介绍如何在Python中生成非重复随机数?,包括了如何在Python中生成非重复随机数?的使用技巧和注意事项,需要的朋友参考一下 接下来的程序会生成10个介于1到100之间的随机非重复整数。它会在给定的时间间隔内生成一个随机整数,如果先前未添加过该整数,则将其添加到列表中。

  • 问题内容: 我正在寻找一种有效的方法来在Swift中生成具有任意范围(甚至可能是或)的大数(包括浮点类型!)。 我见过的所有现有问题要么因大值()而崩溃,要么不支持范围。我知道您可以从中读取随机字节,但这无助于将这些值限制为给定的时间间隔(而且我敢肯定,循环直到无效为止)。 问题答案: 这是的可能解决方案,并且可以与所有这些类型一起使用。它被编写为扩展方法(现已针对Swift2进行了更新),但是对

  • 本文向大家介绍C语言/C++如何生成随机数,包括了C语言/C++如何生成随机数的使用技巧和注意事项,需要的朋友参考一下 本文分享了C语言/C++如何生成随机数的具体实现方法,供大家参考,具体内容如下 C语言/C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,C语言/C++里没有自带的random(int number)函数。 (1) 如果你只要产生随机数而不需要设定范围的

  • 我想构造一个像随机数生成器一样工作的对象,但它会以指定的顺序生成数字。 上面代码的问题,我不能在最后一行调用,因为它是一个生成器。我知道重写上述代码最直接的方法是简单地循环非随机数,而不是定义生成器。我更愿意让上面的例子起作用,因为我正在处理一大块代码,其中包括一个函数,该函数接受一个随机数生成器作为参数,我想添加传递非随机数序列的功能,而无需重写整个代码。