相关疑难解决方法(0)

在C/C++中获取大的随机数

标准rand()功能给我的数字不够大:我需要unsigned long long的.我们如何获得非常大的随机数?我尝试修改一个简单的哈希函数,但它太大,运行时间太长,从不产生小于1e5的数字!!

c c++ random unsigned-long-long-int

8
推荐指数
2
解决办法
1万
查看次数

生成随机长数

我知道要生成随机长数,我在Java中执行以下步骤:

Random r = new Random();
return r.nextLong();
Run Code Online (Sandbox Code Playgroud)

在C++中,这段代码相当于什么?像这样?

return (long)rand();
Run Code Online (Sandbox Code Playgroud)

c++

7
推荐指数
4
解决办法
2万
查看次数

获取大于 RAND_MAX 的随机数

Andrew Koenig的Accelerated C++问题 7-9 提问:

7-9。(困难)第 7.4.4/135 节中的 nrand 实现不适用于大于 RAND_MAX 的参数。通常,这个限制没有问题,因为无论如何 RAND_MAX 通常是最大可能的整数。尽管如此,在某些实现中 RAND_MAX 远小于最大可能的整数。例如,RAND_MAX 为 32767 (2^15 -1) 并且最大可能的整数为 2147483647 (2^31 -1) 的情况并不少见。重新实现 nrand,使其适用于所有 n 值。

如果n > RAN_MAX我的想法要采取

double temp = n/RAN_MAX + .5;
int mult = temp;
int randomNum = 0;

for (int i = 0; i != mult; mult++)
    randomNum += rand();
Run Code Online (Sandbox Code Playgroud)

然后测试是否randomNum < n。这可以生成随机数> RAND_MAX吗?我不知道如何使用比我的计算机可以处理的更大的整数,所以我认为没有任何真正的方法可以分辨。

c++

5
推荐指数
1
解决办法
5373
查看次数

标签 统计

c++ ×3

c ×1

random ×1

unsigned-long-long-int ×1