1. 程式人生 > >如何產生m~n範圍的隨機數 C++

如何產生m~n範圍的隨機數 C++

C++的隨機數函式為rand(), 可以獲得一個非負整數的隨機數。
要讓隨機數限定在一個範圍,可以採用模除加加法的方式。
要產生隨機數r, 其範圍為 m<=r<=n,可以使用如下公式:
rand()%(n-m+1)+m
其原理為,對於任意數,
0<=rand()%(n-m+1)<=n-m
於是
0+m<=rand()%(n-m+1)+m<=n-m+m
即
m<=rand()%(n-m+1)+m<=n
但是rand不是真正的隨機,可以呼叫C++庫來實現
#include <iostream>
#include <random>
int main()
{
  std::random_device rd;
  for(int n=0; n<20000; ++n)
    std::cout << rd() << std::endl;
  return 0; 
}