模拟算法

在程序设计语言中,可以使用随机函数来模拟自然界中发生的不可预测的情况。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;
}
时间: 2024-10-31 13:07:14

模拟算法的相关文章

模拟算法_掷骰子游戏&amp;&amp;猜数游戏

模拟算法是用随机函数来模拟自然界中发生的不可预测的情况,C语言中是用srand()和rand()函数来生成随机数. 先来介绍一下随机数的生成: 1.产生不定范围的随机数 函数原型:int rand() 产生一个介于0~RAD_MAX间的整数,其具体值与系统有关系.Linux下为2147483647.我们可以在include文件夹中的stdlib.h中可以看到(Linux在usr目录下,Windows在安装目录下) 1 #include<stdio.h> 2 #include<stdlib

数据结构与算法之模拟算法 C++实现

模拟算法:模拟整个过程,通过改变数学中模型的各种参数,进而观察变更这些参数所引起过程状态的变化. 算法思路:使用随机函数来模拟自然界中发生的不可预测情况.(srand() 和 rand()函数生成随机数) 模拟算法也就是将整个过程完完整整的走一遍,题目怎么叙述的,程序就怎么运行. 实例一:猜数字 计算机随机生成一个1-100的整数,用户猜测,每次猜测给出不同的提示. 代码: #include <iostream> #include <stdlib.h> #include <t

模拟算法+栈 HDU 1022

Train Problem I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 30245    Accepted Submission(s): 11434 Problem Description As the new term comes, the Ignatius Train Station is very busy nowadays

Unity项目 - Boids集群模拟算法

1987年Craig W.Reynolds发表一篇名为<鸟群.牧群.鱼群:分布式行为模式>的论文,描述了一种非常简单的.以面向对象思维模拟群体类行为的方法,称之为 Boids ,Boids 采用了三个核心的规则: 排斥性:避免与群体内邻近个体发生碰撞 同向性:趋向与邻近的个体采用相同的速度方向 凝聚向心性:向邻近个体的平均位置靠近 由此我们采用Unity来实现算法并演示,演示结果: 制作思路 每个boid对象,每帧都有2个关键的表:与该boid邻近的boids的表及与该boid最近的boids

简单模拟算法(1)

使用过python的pyautogui库的应该都知道官方文档有一个这样的例子: 源码如下: 1 import pyautogui 2 3 distance = 200 4 while distance > 0: 5 pyautogui.dragRel(distance, 0, duration = 0.5) #右 6 distance -= 10 7 pyautogui.dragRel(0, distance, duration = 0.5) #下 8 pyautogui.dragRel(-di

数据结构学习笔记 模拟算法1

猜数字 #include<stdio.h> #include<time.h> int main() { int n,m,i=0; srand(time(NULL)); n=rand()% 100 +1; do{ printf("输入所猜的数字:"); scanf("%d",&m); i++; if(m>n) printf("错误!所猜的数太大了!\n");  else if (m<n)  printf(

模拟算法练习

codevs  1.1507 酒厂选址 1 #define N 10010 2 #include<iostream> 3 using namespace std; 4 #include<cstdio> 5 #include<cstring> 6 int sum[N],z[N],a[N]; 7 long long minn=-1; 8 int n; 9 int read() 10 { 11 int ans=0;char s; 12 s=getchar(); 13 whil

1.8 模拟算法

1 猜数游戏 1 #include <time.h> 2 #include <stdio.h> 3 int main() 4 { 5 int n,m,i=0; 6 srand(time(NULL)); 7 n=rand() % 100 + 1; 8 do{ 9 printf("输入所猜数字:"); 10 scanf("%d",&m); 11 i++; 12 if (m>n) 13 printf("错误!所猜数太大了!\

数据结构 学习笔记 模拟算法2

掷骰子游戏 #include<stdio.h> #include<time.h> void play(int n) { int i ,m=0,t=0; 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; //骰子数量 i