for循环中的相同随机数

大卫

有很多类似的问题,但是我找不到我的问题的答案。我正在编写自己的随机数生成器(出于学习目的)。我在这里粘贴代码的重要部分:

long rng(long x0, long c, long p)
{
    long x = (c*x0) % p;
    return x;
}

main()函数中,我对此进行了迭代rng()

long x2 = 37951;                    // initialize the seed
long c = 69069; long p = pow(2,32); // initialize c and p

for (int i=1; i<=n; i++) {
    long x1 = rng(x2,c,p);
    long x2 = rng(x1,c,p);
    cout << x1 << "\t" << x2 <<endl;
}

之后,我想生成极坐标,因此需要在每个循环中生成2个随机数。如您所见,种子仅被初始化了一次,但是我得到的结果是:

2621237619  504678423
2621237619  504678423
2621237619  504678423
2621237619  504678423
2621237619  504678423

如果仅生成x2(带有long x2 = rng(x1,c,p);),则在每个循环中我将得到不同的结果。有人可以告诉我为什么吗?

迈克猫

这是因为x2用于计算的x1数据未更新,因为它被定义为局部变量。

尝试这个:

#include <iostream>
#include <cmath>
using std::cout;
using std::endl;

long rng(long x0, long c, long p)
{
    long x = (c*x0) % p;
    return x;
}

int main(void) {
    long x2 = 37951;                    // initialize the seed
    long c = 69069; long p = pow(2,32); // initialize c and p
    int n = 5;

    for (int i=1; i<=n; i++) {
        long x1 = rng(x2,c,p);
        x2 = rng(x1,c,p);
        cout << x1 << "\t" << x2 <<endl;
    }
    return 0;
}

注意:如果的大小long小于或等于4个字节(32位)此代码将无法正常工作

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在循环中生成相同的随机数序列

来自分类Dev

不在循环中多次生成相同的随机数

来自分类Dev

在JS的循环中返回一个随机数,但绝不相同

来自分类Dev

随机数生成器总是在for循环中生成相同的数字吗?

来自分类Dev

for循环中的随机数生成器每次都给出相同的数字

来自分类Dev

while循环中的随机数[C编程]

来自分类Dev

Matlab中并行循环中的不同(伪)随机数

来自分类Dev

在R软件的for循环中生成随机数

来自分类Dev

需要对循环中的随机数中的数字求和

来自分类Dev

在fork循环中生成随机数

来自分类Dev

Java在for循环中生成随机数

来自分类Dev

需要对循环中的随机数中的数字求和

来自分类Dev

随机数在循环中不会改变

来自分类Dev

如果相同的随机数重复,则继续循环

来自分类Dev

如果重复相同的随机数,则继续循环

来自分类Dev

Ada随机数相同

来自分类Dev

获取相同的随机数

来自分类Dev

Python随机数循环

来自分类Dev

如何在Python中的每次循环中生成唯一的单个随机数?

来自分类Dev

为什么我生成的随机数不会在循环中改变?C

来自分类Dev

如何在C的循环中生成不同的随机数?

来自分类Dev

在每个循环中将不同的随机数附加到Javascript数组中的URL

来自分类Dev

在 loop_C++ 中生成随机数并在循环中生成数组(openmp)

来自分类Dev

随机数=相同的星数

来自分类Dev

生成具有均匀分布的随机数(循环获得相同的数)

来自分类Dev

在numpy中绘制相同的随机数

来自分类Dev

每次随机数的数组都相同

来自分类Dev

C ++随机数始终相同

来自分类Dev

犰狳产生相同的随机数