Generate random numbers with uniform distribution (getting same number in loop)

nash.ouroboro

I need to generate random numbers between two specified numbers in a loop with a uniform distribution. I am using the random library of C++11.

My problem is that I keep getting the same number in the loop. It is required that the number generated on every loop pass be different. Code below:

#include <cstdlib>
#include <stdio.h>
#include <iostream>
#include <random>
using namespace std;

double randnum (double a, double b)
{
  std::default_random_engine generator;
  std::uniform_real_distribution<double> distribution (a,b);
  double num=distribution(generator);

  return num;
}


int main()
{
    int np=100;

    double umin =0;
    double umax=0.5;
    double u[np];

    for (int i=0;i<np;i++)
    {
        u[i]=randnum(umin,umax);
        cout<<u[i]<<endl;
    }    
}

Please help. Any advice on generating random number by any alternative means is welcome, but it must have a uniform distribution.

TemplateRex

The random number engines in the Standard Library are pseudo-random, i.e. deterministic in how their internal state is initialized and mutated. This means that each function call will get a fresh new generator that will continue to give the same number over and over again.

Just make the generator a static function variable so that its state can evolve over different function calls.

#include <iostream>
#include <random>
using namespace std;

double randnum (double a, double b)
{
  static std::default_random_engine generator;
  std::uniform_real_distribution<double> distribution (a,b);
  return distribution(generator);
}

int main()
{
    const int np=100;

    double umin =0;
    double umax=0.5;
    double u[np];

    for (int i=0;i<np;i++)
    {
        u[i]=randnum(umin,umax);
        cout<<u[i]<<endl;
    }    
}

Live Example.

Note, you will get the same sequence of numbers for each run of your compiled program. To get more random behavior across program invocations, you can use e.g. std::random_device.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Generate random numbers with uniform distribution (getting same number in loop)

From Dev

Is it possible for a uniform discrete distribution (uniform_int_distribution) to generate sequential (or the same) numbers when used correctly?

From Dev

How generate pseudo-random numbers in uniform and gaussian distribution without float/double numbers?

From Dev

Random real numbers with uniform distribution in verilog

From Dev

How many random numbers can std::uniform_real_distribution generate before losing randomness?

From Dev

Very fast uniform distribution random number generator

From Dev

Generate random numbers with a given distribution

From Dev

Uniform random numbers are the same in all runs

From Dev

C random number generator generate sometimes the same numbers

From Dev

Trying to generate random numbers on iphone, get same number

From Dev

C random number generator generate sometimes the same numbers

From Dev

Same random numbers in a for loop

From Dev

Generate random position with uniform distribution inside rounded rect

From Dev

Getting the same random number

From Dev

Random Uniform Distribution

From Dev

Random Uniform Distribution

From Dev

How do I generate a sequence of integer numbers in a uniform distribution?

From Dev

How do I generate a sequence of integer numbers in a uniform distribution?

From Dev

Generate random numbers replicating arbitrary distribution

From Dev

Generate same set of random numbers

From Dev

Random number generator in a for loop gives same numbers each time

From Dev

C++ thread-safe uniform distribution random number generation

From Dev

does random number in the real world follow uniform distribution

From Dev

Making own random number class compitible with uniform_int_distribution

From Dev

is boost::random::uniform_real_distribution supposed to be the same across processors?

From Dev

Generate random number belonging to exponential distribution

From Dev

How do I generate thread-safe uniform random numbers?

From Dev

How do I generate thread-safe uniform random numbers?

From Dev

How to make a random function in fortran to generate the same random distribution into array?

Related Related

  1. 1

    Generate random numbers with uniform distribution (getting same number in loop)

  2. 2

    Is it possible for a uniform discrete distribution (uniform_int_distribution) to generate sequential (or the same) numbers when used correctly?

  3. 3

    How generate pseudo-random numbers in uniform and gaussian distribution without float/double numbers?

  4. 4

    Random real numbers with uniform distribution in verilog

  5. 5

    How many random numbers can std::uniform_real_distribution generate before losing randomness?

  6. 6

    Very fast uniform distribution random number generator

  7. 7

    Generate random numbers with a given distribution

  8. 8

    Uniform random numbers are the same in all runs

  9. 9

    C random number generator generate sometimes the same numbers

  10. 10

    Trying to generate random numbers on iphone, get same number

  11. 11

    C random number generator generate sometimes the same numbers

  12. 12

    Same random numbers in a for loop

  13. 13

    Generate random position with uniform distribution inside rounded rect

  14. 14

    Getting the same random number

  15. 15

    Random Uniform Distribution

  16. 16

    Random Uniform Distribution

  17. 17

    How do I generate a sequence of integer numbers in a uniform distribution?

  18. 18

    How do I generate a sequence of integer numbers in a uniform distribution?

  19. 19

    Generate random numbers replicating arbitrary distribution

  20. 20

    Generate same set of random numbers

  21. 21

    Random number generator in a for loop gives same numbers each time

  22. 22

    C++ thread-safe uniform distribution random number generation

  23. 23

    does random number in the real world follow uniform distribution

  24. 24

    Making own random number class compitible with uniform_int_distribution

  25. 25

    is boost::random::uniform_real_distribution supposed to be the same across processors?

  26. 26

    Generate random number belonging to exponential distribution

  27. 27

    How do I generate thread-safe uniform random numbers?

  28. 28

    How do I generate thread-safe uniform random numbers?

  29. 29

    How to make a random function in fortran to generate the same random distribution into array?

HotTag

Archive