随机数模拟抛硬币实验

本文通过计算机生成的伪随机数来模拟抛硬币实验,详细介绍了如何利用线性同余法生成的随机数模拟10次抛硬币过程,并在主程序中进行50000次重复实验,统计不同次数正面出现的概率,最后展示模拟得到的正面事件频率图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在现实计算机上无法产生真正的随机数,因此在随机化算法中使用的随机数都是一定程度上随机的,即伪随机数。线性同余法是产生伪随机数最常用的方法(这里不介绍)。


下面用计算机产生大的伪随机数来模拟抛硬币试验。假设抛10次硬币,每次抛硬币得到正面和反面是随机的。抛10次硬币构成一个事件。调用Random(2)返回一个二值结果。返回0表示抛硬币得到反面,返回1表示得到正面。下面的算法TossCoins模拟抛10次硬币这一事件。在主程序中反复用函数TossCoins模拟抛10次硬币这一事件50000次。用head[i](0<=i<=10)记录这50000次模拟恰好得到i次正面的次数。最终输出模拟抛硬币时间得到正面事件的频率图。

#include<iostream>
#include<time.h>
#include <iomanip>
using namespace std;

//随机数类
const unsigned long maxshort=65536L;
const unsigned long multiplier=1194211693L;
const unsigned long adder=12345L;
class RandomNumber
{
	private:
		//当前种子
		unsigned long randSeed;
	public:
		RandomNumber(unsigned long s=0); //构造函数,默认值0表示由系统自动生成种子
		unsigned short Random(unsigned long n);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值