首页 > 代码库 > 模拟算法

模拟算法

 

在程序设计语言中,可以使用随机函数来模拟自然界中发生的不可预测的情况。C语言中使用srand()函数和rand()函数可以生成随机数。使用这两个函数需要包含time.h头文件。

实例一,猜数字游戏。使用模拟算法编写一个猜数字游戏,由计算机随机生成一个1-100之内的整数,然后由用户来猜这个数,根据用户猜测的次数分别给出不同的提示文字。

#include <time.h>
#include <stdio.h>
int main(void){
    int n, m, i = 0;//m是用户猜的数,n是电脑生成的数,i是猜的次数 
    srand(time(NULL));
    n = rand()%100+1;
    do{
        printf("请输入你猜的数字\n");
        scanf("%d",&m);
        i++;
        if(m>n){
            printf("你猜的太大了\n");
        }
        else if(m<n){
            printf("你猜的太小了\n");
        }
    }
    while(m!=n);
    printf("猜对了,共猜了%d次\n",i);
    if(i<=5){
        printf("你太聪明了,这么快就猜出来了");
    }
    else if(i>5){
        printf("哥们儿,猜的次数有点儿多呀");
    }
    getch();
    return 0;
} 

实例二,模拟掷骰子游戏。由用户输入骰子数量和参赛人数,然后由计算机随机生成每一粒骰子的数量,再累加起来就得到每一个选手的总点数。

#include <stdio.h>
#include <time.h>
void play(int n){
    int i, m=0, t=0;//t是每一粒骰子的点数,m是一个选手的总点数,i是次数 
    for(i=0;i<n;i++){
        t = rand()%6+1;
        m+=t;
        printf("\t第%d粒:%d;\n",i+1,t);    
    }
    printf("\t总点数为:%d\n",m);
}
int main(void){
    int c;//参赛人数
    int n;//骰子数量
    int i,m;
    do{
        srand(time(NULL));
        printf("设置骰子的数量(输入0退出)"); 
        scanf("%d",&n);
        if(n==0) break;//至少得需要一个骰子 
        printf("\n输入本轮的参赛人数(输入0退出)"); 
        scanf("%d",&c);
        if(c==0) break;//至少得需要一个骰子 
        for(i=0; i<c; i++){
            printf("\n第%d位选手掷出的骰子为\n",i+1); 
            play(n);
        }
        printf("\n");
    } 
    while(1);
    return 0;
}

 

模拟算法