C语言如何生成随机数

C语言如何生成随机数生成10个100以内的随机数废话不多说直接上程序。#include<stdio.h>#include<stdlib.h>#include<time.h>intmain(){intret=0;srand((unsignedint)time(NULL));for(inti=0;i<10;i…

大家好,又见面了,我是你们的朋友全栈君。

C语言如何生成随机数

生成10个100以内的随机数

废话不多说直接上程序。

#include<stdio.h>
#include<stdlib.h>
#include<time.h> 
int main()
{
int ret = 0;
srand((unsigned int)time(NULL));
for(int i=0; i<10; i++)
{
ret = rand()%100;
printf("%d ",ret);
}
return 0;
}

这里写图片描述
这个程序是用来生成10个随机的数。接下来会详细说一说这个程序的构成。

随机数生成代码的分析

以上程序的关键代码是:

 srand = ((unsigned)time(NULL));
 ret = rand()%100;   

rand()函数所需头文件是

#include<stdlib.h>

rand()是生成伪随机数的函数,它会按照一定的序列来生成随机数,但是它序列是固定的:

这里写图片描述

程序每次执行它都将按照这个序列来给出随机数,所以在对rand()不加限制条件的话,生成的随机数不够随机。

time()函数所需要头的头文件是:

#include<time.h>

time()函数,值得注意的是time函数的形参,这个形参是个指针变量,通常写为time(NULL)。
这个函数的功能是,返回自1970年1月1日00:00:00到你先在电脑运行的时间(例:2018年3月24日14:14:00)之间的时间。这个数是随机的,随着你电脑运行时间而发生改变。

srand()函数所需要的头文件是:

#include<stdlib.h>

srand()函数是伪随机数发生器种子,它给rand()函数一个产生一个起点。在单独使用rand()函数的时候,它将1作为默认参数。srand()的形参是一个无符号的类型,即unsigned类型,可以是int,float,char等等。
但在这里为了达到随机数效果,将使用time()函数来产生一个起点,它直接作用于rand()函数。

注意:

   ret = rand()%100;

rand()%100是为了产生100以内的随机数。

有趣的小程序

这是一个电脑自己猜数字的小程序。

#include<stdio.h>
#include<time.h>
#include<process.h>
#include<stdlib.h>
#include<Windows.h>
int main()
{
    int ret = 0;
    int guess = 0;
    int left = 0;
    int right = 100;
    srand((unsigned int)time(NULL));
    ret = rand() % 100;
    printf("提供的答案数是->%d\n",ret);
    guess = 50;
    while (1)
    {
        if (guess > ret)
        {
            printf("猜大了->%d\n", guess);
            right = guess;
            guess = (right + left) / 2;
            Sleep(1000);
        }
        else if (guess < ret)
        {
            printf("猜小了->%d\n", guess);
            left = guess;
            guess = (right + left) / 2;
            Sleep(1000);
        }
        if (guess == ret)
        {
            printf("猜到了是%d", guess);
            break;
        }
    }
    system("pause ");
    return 0;
}

这里写图片描述

这里使用了二分法的思想,让电脑自己去猜100以内的一个数。
使用了Sleep()函数用来延迟一下打印时间,Sleep()函数的参数的单位是ms,所以1000ms=1s。

谢谢您的阅读

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125957.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 苹果怎么设置侧边滑返回键_苹果X的按键怎么拆

    苹果怎么设置侧边滑返回键_苹果X的按键怎么拆iPhoneX上市也已经有一段时间了,众所周知它去除了我们熟悉的睡眠/唤醒按钮——home键。很多用户肯定对觉得这个设计很反人类,其实现实是恰恰相反,苹果只是简单地把home键的功能分配到了Side按钮,除了消失的指纹识别其他功能一应俱全。现在就让小编带大家看看iPhoneX侧边按钮有多牛X。1、睡眠/唤醒用惯了iPhone的人总喜欢按圆圆的home键唤醒手机,不过现在你仍然可以使用侧面按…

    2022年8月10日
    7
  • 详解springBoot集成activiti7,工作流实战案例(三)

    详解springBoot集成activiti7,工作流实战案例(三)快速使用IDEA搭建SpringBoot项目,集成Activiti7(一)详解springBoot集成activiti7,使用actiBPM绘制流程图(二)过程分析:部署流程 启动一个流程实例 查询当前流程中等待执行的任务 处理任务 流程结束用到activiti的service(ps:记得注入):RepositoryService RuntimeService…

    2022年10月19日
    3
  • JAVA游戏网址(JAVA手机游戏)

    懒得码代码了,直接把链接放这里UC游戏中心http://wap.9game.cn数熊(被和谐了)http://www.goonmax.comhttp://d.958shop.com/format/game/0-88/http://www.47473.com/symbianjava/玩家个人站http://www.11ou.com/jgamehttp://app.cnmo.com/java/c102…

    2022年4月12日
    73
  • 26.学习Camera之——PDAF(相位对焦)的基本原理

    26.学习Camera之——PDAF(相位对焦)的基本原理在自动对焦的时候总是有一个困惑,知道图像是不清楚的,但是lens应该向前还是向后移动呢?总是要前后移动lens一下才知道,普通的反差法对焦就是这么做的,爬山嘛。PDAF的出现就是为了解决这个lens移动的问题,可以根据图像,预判lens运动的方向。PDAF最早运用在单反上,已经是非常成熟的技术了,原理如下图。左图为CCD在焦后的情况,右图为焦前。当CCD在焦后时,在线阵CCD1和CCD2上会发现聚焦点CCD1的在左,反之,则聚焦点CCD2的在左(图中红色标记的光线)。这种方法需要加.

    2025年9月24日
    6
  • linux 中增加路由(route)命令详解

    linux 中增加路由(route)命令详解linuxroute命令  显示现在所有路由  #route-n  root@Ubuntu:~#route  KernelIProutingtable  DestinationGatewayGenmaskFlagsMetricRefUseIface  10.147.9.0*255.255.255.0U100eth0  192.1…

    2022年7月18日
    16
  • stm32入门教程_单片机STM32

    stm32入门教程_单片机STM32提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言首先你得知道学习stm32,实际就是在学ARM内核,stm32内核就是ARM的;一、pandas是什么?示例:pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):importnumpyasnpimportpandasaspdimportmatplotlib..

    2025年9月24日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号