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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java 内存分析工具 生成 dump_java内存检测工具

    java 内存分析工具 生成 dump_java内存检测工具jmap-heap1234查看进程号为1234的Java程序的整个jvm内存状态jmap-histo1234查找进程号为1234的java程序的jvm堆中对象详细占用情况jmap-dump:format=b,file=/my.dump1234导出1234进程的java程序的整个JVM信息jhat-J-Xmx1024M/my.dump,启动web服务查看jmap导出的jav…

    2022年10月2日
  • 数据库锁表

    数据库锁表人工智能,零基础入门!http://www.captainbed.net/inner1、锁表发生在insert、update、delete语句中2、锁表的原理是数据库使用独占式封锁机制,当执行上面的语句时,对表进行锁住,直到发生commit或回滚或退出数据库用户3、锁表的原因:第一、A程序执行了对tableA的insert,并还未commite时,B程…

    2022年6月18日
  • 【推荐】Java内存管理系列文章

    勿在流沙筑高台,出来混迟早要还的。做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开!谢谢你的阅读,如果您觉得这篇博文对你有帮助,请点赞或者喜欢,让更多的人看到!祝你每天开心愉快!不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!博客首页 : http://blog.csdn.net/u010648555愿你我在人生的路上能都变成最好的自己,能…

    2022年2月28日
  • ant 下载地址[通俗易懂]

    ant 下载地址[通俗易懂]https://archive.apache.org/dist/ant/binaries/

    2022年7月13日
  • SVN汉化包安装后无效果(已解决)「建议收藏」

    SVN汉化包安装后无效果(已解决)「建议收藏」SVN汉化包安装后无效果(已解决)上图是我下载的SVN客户端的版本。下图是汉化包版本然后我就按部就班的一步一步安装,但始终不能设置语言为中文后来才知道是版本不对,汉化包和客户端版本要一致才行。最后我重新下了一个版本的汉化包再安装(我就把汉化包下载在桌面上,然后点击安装的),问题解决。如下图:相关链接SVN客户端下载地址:https://tortoisesvn.net/downloa…

    2022年10月26日
  • openssl-heartbleed漏洞学习

    openssl-heartbleed漏洞学习了解漏洞Heartbleed漏洞:Heartbleed漏洞是openssl的一个漏洞,这个严重漏洞(CVE-2014-0160)的产生是由于未能在memcpy()调用受害用户输入内容作为长度参数之前正确进行边界检查。攻击者可以追踪OpenSSL所分配的64KB缓存、将超出必要范围的字节信息复制到缓存当中再返回缓存内容,这样一来受害者的内存内容就会以每次64KB的速度进行泄露。背景和影响:…

    2022年7月25日

发表回复

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

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