编写一个打赌输赢机,用户输入赌大还是赌小,x 表示小,d表示大 ,用rand()函数随

编写一个打赌输赢机,用户输入赌大还是赌小,x 表示小,d表示大 ,用rand()函数随,第1张

#include<iostream>

using namespace std

int main()                          //主函数

{char c=0,a                        //c用于存放x或d,a用于存放开出来的腔陪数

 srand(time(0))                    //种随机种子

 do{printf("押大请按D,押小请按X,退出请按T:")

    fflush(stdin)                  //清除输入缓冲区

    scanf("%c",&c)                笑镇 //接受输入

    if(c=='t'||c=='T') break       //如果输入t退出循环

    if(c=='x'||c=='X') c=0         //如果输入x置0 

    伍升蠢else if(c=='d'||c=='D') c=1    //否则如果输入y置1 

         else {printf("输入有误,请重来!\n")

               continue}           //如果都不是则重新输入

    a=rand()%16+3                  //模拟骰子开出3-18的一个随机数

    printf("开%d,%s! ",a,a>10?"大":"小")//显示开奖结果

    if((a>10&&c==1)||(a<11&&c==0))  //如果开大猜大或者开小猜小

       printf("恭喜你,猜对了!\n")  //猜对了就提示正确

    else printf("很遗憾,猜错了!\n")//猜错了就提示错误

 }while(1)                         //循环,重来一次

 system("PAUSE")                   //暂停屏幕,以看清运行结果

 return 0}                         //程序结束

编写程序?还是电子表格?

一、编写程序思路:

1千次循环开始{

随机数;

如果{

1:统计1

2:统计2

……

6:统计6

结束穗誉如果;

}结束循环大枯

列出总的结果

二、电子表格思路:

Excel表格,则使用rand函数,在A1:K100里,产生0~5六个数。

然后,猜仿段用countif函数统计。

我很懒。不写实际东东了……

不知道你做这个是在什么地方用,其实做到非常的简单.但是讲起来比较麻烦,还需要你有一定的基础,你需要耐心的看下去.

C语言的随机数产生可以通过random函数得到,设x=random() 那么x就是一个(0,1)的随机变量。

再设一个变量 p4 表示 4 出现的概率

初始化时可以令 p4=1/4

程序结构大致如此

a[]为结果序列

for (循环体根据你需要的数的长度得到)

{

x=random()//得到一个随机数

若 0<x<p4 a[i]=4

若 p4<x<p4+(1-p4)/3a[i]=3

若 p4+(1-p4)/3<x<p4+2*(1-p4)/3a[i]=2

若 p4+2*(1-p4)/3<x<p4+3*(1-p4)/3a[i]=1

if (a[i]=4) { p4=0count=0}

count=count+1

if (count>16) { p4=(count-16)/4 } 保证16-20次必有一个 4 出现,同时在16次以内决不会出现两个4

}

如果你需要matlab程序我可以很快给你写出来。

2 如果你学过m序列就知道了,计算机的随机数都是m序列的原理,好比均匀分布的随机序列,如楼主所说,不加处理(1,2,3,4)出现的概率都是1/4,因此连续出现一个数的概率N次的概率为(1/4)^N,只要N不管多大,都是可能的,但是概率会非常的小。

3 你说的第三点是对的,其实计算机的此差随机都是伪随机序列,但是周期可以长到你这辈子都不可能看完它循环完孙埋一次。

/* HELLO.C -- Hello, world */

#include "stdio.h"

#include "conio.h"

# include "dos.h"

main()

{

int N,i,a[100],count

float p4,x,dp

struct time stime

unsigned seed

gettime(&stime)

seed=stime.ti_hund*stime.ti_min*stime.ti_hour

srand(seed)

N=100

p4=0.25

count=17

for(i=0i<则扒蚂Ni++)

{

x=rand()

x=x/32768

dp=(1-p4)/3

if (x>=0 &&x<=p4) a[i]=4

if (x>p4 &&x<=p4+dp) a[i]=3

if (x>p4+dp &&x<=p4+2*dp) a[i]=2

if (x>p4+2*dp &&x<=p4+3*dp) a[i]=1

if (a[i]==4){p4=0count=0}

count=count+1

if( count>16) {p4=(count-16)p4=p4/4}

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

}

getch()

}

srand(seed)根据系统时间初始化随机,不然就会出现每次运行出相同的结果

上面是根据思路设计的C程序,结果可以调出来,

程序的运行结果生成一百个随机数,是 16 个间隔以内肯定只有一个4,20个间隔以内又必有两个4


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12281398.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存