C语言实现随机数
最近在看《The C Programming Language》这本书,看到一个关于随机数的知识点,有种豁然开朗的感觉。以前总靠死记硬背,也不明白为啥是这样,而且总把srand()遗漏。相信你看了也有同样的感觉。书中是这么说的:
标准库中包含一个可移植的实现伪随机数发生器的函数srand以及一个初始化种子数的函数srand。前一个函数rand使用了强制类型转换。(看到这里是不是有个疑惑,种子数是什么呀?别着急,看完接下来的代码你就明白了)
unsigned long int next = ;
/*rand函数:返回值在0- 32767之间的伪随机数*/
int rand(void)
{
next = next * + ;
return (unsigned int)(next / ) % ;
}
/* srand函数:为rand()函数设置种子*/
void srand(unsigned int seed)
{
next = seed;
}
即在rand()中使用的变量next的数据来自srand(),这个变量next即所谓的随机数。
例子1:
#include "stdio.h"
#include "time.h"
#include "stdlib.h" int main()
{
int iRandom = ;
int iNum = ; while(iNum < )
{
srand();
iRandom = rand();
printf("%d\n", iRandom);
iNum++;
} return ;
}
运行结果:
例子2:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h> int main()
{
int iRandom = ;
int iNum = ; while(iNum < )
{
srand(time(NULL));
iRandom = rand();
printf("%d\n", iRandom);
iNum++;
Sleep();
} return ;
}
运行结果:
C语言实现随机数的更多相关文章
- C语言中随机数相关问题
用C语言产生随机数重要用到rand函数.srand函数.及宏RAND_MAX(32767),它们均在stdlib.h中进行了声明. int rand(void);//生成一个随机数 voidsrand ...
- 用c语言产生随机数的方法
用c语言产生随机数的方法 在C语言中,rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列 ...
- 【编程开发】C语言中随机数rand使用注意事项
[编程开发]C语言中随机数rand使用注意事项 标签: [编程开发] 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:随机数在编程开发中非常重要,以C语 ...
- 【转】C语言产生随机数
原文地址:http://www.cnblogs.com/xianghang123/archive/2011/08/24/2152404.html 在C语言中,rand()函数可以用来产生随机数,但是这 ...
- C语言之随机数函数( rand() )的使用方法
文章出自个人博客https://knightyun.github.io/2018/04/25/c-rand-number,转载请申明. 在程序设计中,难免会使用到随机值函数,其原理与语法大多类似,接下 ...
- c语言产生随机数的方法
在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公 ...
- C语言:随机数
在实际编程中,我们经常需要生成随机数,例如,贪吃蛇游戏中在随机的位置出现食物,扑克牌游戏中随机发牌.在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机 ...
- C语言产生随机数(伪)
C语言的获取随机数的函数为rand(), 可以获得一个非负整数的随机数.要调用rand需要引用头文件stdlib.h.要让随机数限定在一个范围,可以采用模除加加法的方式.要产生随机数r, 其范围为 m ...
- C语言产生随机数
rand产生随机数 #include"stdio.h" #include"stdlib.h" void main() { int i; for(i=0;i< ...
- C语言中随机数的生成
刚好在找这方面的资料,看到了一片不错的,就全文转过来了,省的我以后再找找不到. 在C语言中,可以通过rand函数得到一个“伪随机数”.这个数是一个整数,其值大于等于0且小于等于RAND_MAX.ran ...
随机推荐
- Android ListView左滑删除、左滑自定义功能
最近项目需要ListView左滑删除功能,搜集了很多资料发现了一个某一前辈写的库能很简单的实现这个功能,而且有源码,直接拿来使用了. 库名字叫做SwipeMenuListView,下面给大家演示一下使 ...
- protobuf 源代码分析 (1)准备工作
protobuf简介 protobuf是google开源的跨平台的一种数据序列化的代码自动生成器,支持c++.java和python语言,支持跨网络的传输数据,与平台类型无关.并且其生产的序列化数据具 ...
- VisualSVN server搭建装配和指定IP或域名
在主机商边绑定A记录即可
- scrapy实战--爬取报刊名称及地址
目标:爬取全国报刊名称及地址 链接:http://news.xinhuanet.com/zgjx/2007-09/13/content_6714741.htm 目的:练习scrapy爬取数据 学习过s ...
- Oracle EBS PO退货失败
无法读取例程 &ROUTINE 中配置文件选项 INV_DEBUG_TRACE 的值. 系统-配置文件-地点层 INC%调试%踪 是 select * from po_interface_e ...
- InputStream转换为String, byte[] data = new byte[1024]详解
/** * This file created at 2018年2月28日. * * Copyright (c) 2002-2018 Bingosoft, Inc. All rights reserv ...
- POST请求上传多张图片并携带参数
POST请求上传多张图片并携带参数 在iOS中,用POST请求携带参数上传图片是非常恶心的事情,HTTPBody部分完全需要我们自己来配置,这个HTTPBody分为3个部分,头部分可以携带参数,中间部 ...
- OpenGLES渲染
OpenGLES渲染 OpenGLES使用GPU渲染图片,不占用CPU,但其使用还是挺复杂的. 先用OpenGLES显示一张图片: // // ShowViewController.m // Open ...
- PHP SFTP应用(二)
SFTP应用(二) SFTP Server SSH2 sftp操作 FTP进行文件传输需要通过端口进行.一般所需端口为: 控制链路—TCP端口21.控制器端.用于发送指令给服务器以及等待服务器响应. ...
- 绕过CDN查找网站真实IP方法收集
方法1很简单,使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,如果不唯一多半是使用了CDN, 多地 Ping 网站有: http://ping.chinaz.com/ http://pi ...