用c语言模拟抛硬币的过程要输入抛硬币的次数,输出里要有数字面和印花面的次数,最后算出得到数字面和印花面的概率(如果很满意我会加分)

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/10 23:48:14

用c语言模拟抛硬币的过程要输入抛硬币的次数,输出里要有数字面和印花面的次数,最后算出得到数字面和印花面的概率(如果很满意我会加分)
用c语言模拟抛硬币的过程
要输入抛硬币的次数,输出里要有数字面和印花面的次数,最后算出得到数字面和印花面的概率(如果很满意我会加分)

用c语言模拟抛硬币的过程要输入抛硬币的次数,输出里要有数字面和印花面的次数,最后算出得到数字面和印花面的概率(如果很满意我会加分)
C++:
class Program
{
int neg = 0,pos = 0;
int turn = 0;
public Program(int turn)
{
this.turn = turn;
}
public void start()
{
Random rand = new Random();
for (int i = 0; i < turn; i++)
{
result(rand.Next(0,2));
}
}
public void result(int i)
{
if (i == 0)
neg++;//正面的次数
else if (i == 1)
pos++;//反面的次数
else
Console.WriteLine("error!");
}
public void print()
{
Console.WriteLine("抛硬币的次数:{0}",turn);
Console.WriteLine("正面出现的次数:{0}",neg);
Console.WriteLine("正面出现的概率:{0}%",neg * 100 / turn);
Console.WriteLine("反面出现的次数:{0}",pos);
Console.WriteLine("反面出现的概率:{0}%",pos * 100 / turn );
}
public void process()
{
int j;
Console.WriteLine("请输入1开始抛硬币");
j = Convert.ToInt32(Console.ReadLine());
if (j == 1)
{
Console.WriteLine("请输入抛硬币的次数:");
turn = Convert.ToInt32(Console.ReadLine());
start();
Console.WriteLine("输入数字2显示抛掷的结果:");
j = Convert.ToInt32(Console.ReadLine());
}
if (j == 2)
print();
}
static void Main(string[] args)
{
Program play = new Program(0);
play.process();
Console.Read();
}
}
C:
抛10次硬币构成一个事件,每次事件记录得到正面的个数.反复模拟这个事件50,000次,然后对这50,000L次进行输出频率图,比较每次事件得到正面次数的比例.
以下是总的代码:
头文件 RandomNumber.h:
代码
// RandomNumber.h
const unsigned long maxshort = 65535L;
const unsigned long multiplier = 1194211693L;
const unsigned long adder = 12345L;
#ifndef RANDOMNUMBER_H
#define RANDOMNUMBER_H
class RandomNumber{
private:
// 当前种子
unsigned long randSeed;
public:
// 构造函数,默认值0表示由系统自动产生种子
RandomNumber(unsigned long s = 0);
// 产生0 n-1之间的随机整数
unsigned short Random(unsigned long n);
// 产生[0,1) 之间的随机实数
double fRandom();
};
#endif
类实现文件RandomNumber.cpp :
代码
// RandomNumber.cpp
#include "RandomNumber.h"
#include
#include
#include
using namespace std;
// 产生种子
RandomNumber::RandomNumber(unsigned long s)
{
if(s == 0)
randSeed = time(0); //用系统时间产生种子
else
randSeed = s;
}
// 产生0 n-1 之间的随机整数
unsigned short RandomNumber::Random(unsigned long n)
{
randSeed = multiplier * randSeed + adder;
return (unsigned short)((randSeed >> 16) % n);
}
// 产生[0,1)之间的随机实数
double RandomNumber::fRandom()
{
return Random(maxshort) / double(maxshort);
}
主文件Main :
代码
// 主文件main
/*
* Author:Tanky woo
* Blog:www.WuTianQi.com
* Date:2010.12.7
* 代码来至《计算机算法设计与分析》
*/
#include "RandomNumber.h"
#include
#include
#include
using namespace std;
int TossCoins(int numberCoins)
{
// 随机抛硬币
static RandomNumber coinToss;
int i,tosses = 0;
for(i = 0; i < numberCoins; ++i)
tosses += coinToss.Random(2);
return tosses;
}
int main()
{
// 模拟随机抛硬币事件
const int NCOINS = 10;
const long NTOSSES = 50000L;
// heads[i]得到的i次正面的次数
long i,heads[NCOINS+1];
int j,position;
// 初始化数组heads
for(j = 0; j < NCOINS+1; ++j)
heads[j] = 0;
// 重复50,000次模拟事件
for(i = 0; i < NTOSSES; ++i)
heads[TossCoins(NCOINS)] ++;
// 输出频率图
for(i = 0; i

用c语言模拟抛硬币的过程要输入抛硬币的次数,输出里要有数字面和印花面的次数,最后算出得到数字面和印花面的概率(如果很满意我会加分) C语言编程 要求一,输入抛硬币次数,输出该次实验硬币正面的概率,要求小数点保留2位.要求二、输入抛硬币次要求二、输入抛硬币次数和试验次数,输出每次实验硬币正面的概率,要求小数点保 抛硬币 硬币竖着的概率 编写应用程序,用0-1之间的随机数来模拟扔硬币实验,统计扔1000次后出现正反面的次数并输出Java/语言编程 C语言抛硬币基本程序,不要高级语言,需要rand srand 的就行, 掷100次硬币(硬币有正反两面),求正面和反面出现的机率.用JAVA语言回答 谁知道抛一千次硬币和同时抛一千枚硬币,概率是一样的么 抛两个硬币,一个抛一次 ,连续6次两个硬币正反都不同的几率 抛7次硬币,其中2次正面向上.那么他抛8次硬币正面向上的可能性是多少? 抛硬币100次,正面向上的可能性是多少? 抛硬币,连续5次正面的概率是多少 抛硬币连续50次正面向上的概率是多少? 抛硬币50次全部正面的几率多少 抛硬币n次,正面出现次数的数学期望 抛硬币9次都得正面的几率是多少? 抛硬币的概率抛两枚硬币,一正一反的概率是多少?最好把过程也写上. 概率硬币 抛10次硬币,4次正面朝上,那么正面朝上的概率是40%还是50%? C 语言编程:用一张五角的硬币换5分和1角的硬币(至少各有一枚),问有哪几种换法.