当前位置:首页 » 编程语言 » 抛硬币10次c语言代码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

抛硬币10次c语言代码

发布时间: 2022-09-09 07:22:47

c语言,编写模拟翻硬币得程序。

#include<stdio.h>

int main(void)

{

int n;//读入一个数,为结束的次数

int i;

int a[10];//10个硬币

int biaoji = 0;//当这个标记能被3或7整除,说明恰好数了3次或7次

scanf("%d", &n);

for (i = 0; i < 10; i++) //将硬币都初始化为正面的状态,即1

a[i] = 1;

biaoji = 1;//因为a[]的下标不允许超过9,故要重置

a[biaoji - 1] = !a[biaoji - 1];//改变硬币的状态

for (i = 0; i < 10; i++)

printf("%d", a[i]);

return 0;

}

主要特点

C语言是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试,且c语言的处理和表现能力都非常的强大,依靠非常全面的运算符和多样的数据类型,可以轻易完成各种数据结构的构建,通过指针类型更可对内存直接寻址以及对硬件进行直接操作,因此既能够用于开发系统程序,也可用于开发应用软件。

② C语言程序题

修改如下,有问题hi我

#include<stdio.h>
#include<time.h>
#include <stdlib.h>
void main()
{
int a=0,b=0,i=0,j=0,sum=0;
srand((unsigned)time(0));
while(j!=3&&j!=-3)
{
i=rand()%2;

if(i==1) a++;//判断是否相等用==,=是赋值
if(i==0) b++;
j=a-b;
sum++;
printf("%d",i);//这才是打印的正确格式
}
printf("总共抛硬币次数为%d次\n",sum);
}

③ C语言编程 要求一,输入抛硬币次数,输出该次实验硬币正面的概率,要求小数点保留2位. 要求二、输入抛硬币次

简单呀。但是要求二是什么意思呢?抛硬币次数不是实验次数,最好把题目说明白,你可能不知道怎么输出保留俩位小数估计printf("%.2f",x);

④ 用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 <= NCOINS; ++i)

{

position = int (float(heads[i]) / NTOSSES*72);

cout << setw(6) << i << " ";

for(j = 0; j< p>

cout << " ";

cout << "*" << endl;

}

return 0;

}

( 输出频率图:)

⑤ 用C语言编写一个程序,求掷硬币1000次,至少有一次连续出现10次正面的概率。或者讲讲算法。

有两种办法:
第一种就是用随机数进行模拟,然后进行至少100轮的模拟,取平均数
第二种就是用公式,根据概率学进行公式推导,然后使用C语言进行计算。
第一种并不能很准确,但是有说服力,模拟轮数越多越趋向于准确
第二种准确并有说服力,但是需要理论支持去计算。
公式的话:
全部可能出现的排列,是2的1000次方
特定位置可能出现满足的排列,比如前10个都是正面,剩下的随便排列,就是2的990次方
特定位置数,一共是991个
所以,几率就是:991 * 2^990 / 2^1000
(好久没有算过了,可能不太对,但是思路差不多,你好好想想吧)
因为,前11个都是正面的,同时满足第一个和第二个位置的,是重复,需要排除一个,所以还需要额外考虑排除,需要进行处理一下……实际比上述的几率小,具体公式仍需推导……非专业人员帮不到你

⑥ c++模仿十次抛硬币的随机结果,代码有些不明白

for 的最后有全角字符! 最后的)改成)就好了

⑦ 用c语言模拟抛硬币的试验

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#defineINT_MAX100
voidmain()
{
intn,zhengsum=0,fansum=0;
srand(time(NULL));
scanf("%d",&n);
while(n--)
{
if(rand()%INT_MAX*1.0/INT_MAX>0.5)
zhengsum++;
else
fansum++;
}
printf("正面数:%d反面数:%d ",zhengsum,fansum);
}

⑧ C语言抛两个硬币,都是正面我赢,都是反面你赢,一正一反重来。这个代码怎么打

代码可以这样打:

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main()

{

int f=1,n;

srand (time(NULL));

while(f)

{

f=0;

n=rand()%2+rand()%2;

if(n==2)

printf("都是正面,我赢了 ");

else if(n==0)

printf("都是反面,你赢了 ");

else

{

printf("一正一反,重来 ");

f=1;

}

}

return 0;

}

这是运行结果的截图:

4

⑨ 硬币游戏:写一个程序模拟反复抛硬币,直到连续出现三次正面或反面为止,此时你的程序应该显示抛硬币的总次

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
int count_z = 0,count_s = 0,count_x = 0;
int flag;

srand((unsigned int)time(NULL));//以时间作为种子。

while(count_s < 3 && count_x < 3)
{
flag = rand()%2;//产生0和1两个随机数,作为正反面。

if(flag)
{
count_x++;
count_s = 0;
printf("国徽向下 !\n");
}
else
{
count_s++;
count_x = 0;
printf("国徽向上 !\n");
}
count_z++;
}
printf("========================================================\n");
printf("总共抛了 %d 次!\n", count_z);

system("pause");
return 0;
}