用C++生成随机数的代码

use*_*927 1 c++ visual-studio visual-c++

基本上我必须编写一个程序来生成随机数来模拟一对骰子的滚动.该程序应该在多个文件中构建.主函数应该在一个文件中,其他函数应该在第二个源文件中,并且它们的原型应该在头文件中.首先,我编写一个短函数,返回1到6之间的随机值,以模拟单个6面骰子的滚动.其次,我编写了一个假装通过调用此函数两次掷骰子的函数.我的程序首先询问用户应该制作多少卷.然后我写了一个函数来模拟这个骰子滚动这么多次,保持计数2,3,4,5,6,7,8,9,10,11,12的确切次数(每个数字是一对骰子的总和)出现在一个数组中.后来我编写了一个函数来显示一个使用这些计数的小条形图,对于144个卷的样本,理想情况下看起来如下所示,其中打印的星号数对应于计数:

2    3    4    5    6    7    8    9   10    11    12
*    *    *    *    *    *    *    *    *     *     *
*    *    *    *    *    *    *    *    *     *     *
*    *    *    *    *    *    *    *    *     *     *
*    *    *    *    *    *    *    *    *     *     *
     *    *    *    *    *    *    *    *     *     
Run Code Online (Sandbox Code Playgroud)

接下来,为了看看随机数生成器的运行情况,我编写了一个函数来计算滚动的平均值.将其与7的理想平均值进行比较.另外,打印出一个小表格,显示程序对每个卷筒的计数,基于给定卷筒总数的上述频率的理想计数,以及这些值之间的差异.列.到目前为止,这是我不完整的代码:"Compiler visual studio 2010"

int rolling(){    //Function that returns a random value between 1 and 6
rand(unsigned(time(NULL)));
int dice = 1 + (rand() %6);
return dice;
}
int roll_dice(int num1,int num2){ //it calls 'rolling function' twice 
int result1,result2;
num1 = rolling();
num2 = rolling();
result1 = num1;
result2 = num2;
return result1,result2;
}
int main(void){
int times,i,sum,n1,n2;
int c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11;//counters for each sum
printf("Please enter how many times you want to roll the dice.\n")
scanf_s("%i",&times);
Run Code Online (Sandbox Code Playgroud)

我假装使用计数器来计算每个总和并将数字(计数)存储在数组中.我知道我需要一个循环(for)和一些条件语句(if)但主要的问题是从roll_dice获取值并将它们存储在n1和n2中,这样我就可以将它们相加并将总和存储在'sum'中.

ems*_*msr 5

你可以使用 库,如果你可以使用C++ 11.

从页面:

uniform_int_distribution<int> one_to_six {1,6};  // distribution that maps to the ints 1..6
default_random_engine re {};                     // the default engine

int x = one_to_six(re); // x becomes a value in [1:6]
Run Code Online (Sandbox Code Playgroud)

你冷的种子有一个快速移动的时间值.

std::chrono::time_point<std::chrono::system_clock>
  now {std::chrono::system_clock::now()};
std::chrono::system_clock::duration
  epoch {now.time_since_epoch()};
typedef std::chrono::duration<unsigned long long int, std::milli> ms;

std::default_random_engine re {std::chrono::duration_cast<ms>(epoch).count()};
Run Code Online (Sandbox Code Playgroud)