random-about srand and rand

问题描述

about srand and rand

我做了个贪吃蛇程序,里边有food 和snake。
每次snake吃掉food之后,就需要重新生成一个。我是用srand和rand来生成的,
生成之后判断一下有没有跟snake重合,如果重合,则重新生成一个。
现在问题来了,有的时候这个过程会非常慢,我觉得是rand的时候有一定几率某几次总是生成在某个数附近,造成一直跟snake重合。
我想问,是我用rand和srand用的不对吗,还是有更好的方法?
求大神指教

解决方案

  • 首先第一点,C里面提供的随机数函数rand(),叫伪随机数,它是由一个函数生成的,一般用前一个随机数来生成后一个随机数。第一个被用来生成随机数的数叫做随机数种子。
  • 在c中srand是指定了随机数种子。
  • 也就是说,如果你在每次srand提供了同样的数的话(比如说,每轮游戏的开始,用同一个数srand了),随后它产生的随机数序列是一模一样的,一直到你下一次的srand。
  • 为了解决这个问题,一般每次产生一组随机数之前,用一个肯定不会重复的数值来执行srand,比如时间。
时间: 2024-10-25 14:25:33

random-about srand and rand的相关文章

shell脚本如何获取随机数random

用C提供的取随机数的方法srand和rand, 前者是给后者设置随机数种子seed. int rnd_num = 0; srand(seed);       // time(NULL) 通常使用时间做种子 rnd_num = rand();  // 产生随机数 产生种子的方法: 1. 使用日期时间 时间作为种子很简单,取当前日期和时间,但是存在一个陷阱:当多台机器并发执行产生随机数时,出现相同随机数的概率非常高.不推荐这种方式 2. 使用$RANDOM 需要系统支持,通过echo来检测, 打印出

生成随机数rand函数的用法详解_C 语言

函数rand()是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子.如果你在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand().而使用同种子相同的数调用 srand()会导致相同的随机数序列被生成.srand((unsigned)time(NULL))则使用系统定时/计数器的值做为随机种子.每个种子对应一组根据算法预先生成的随机数,所以,在相同的平台环境下,不同时间产生的随机数会是不同的,相应的,若将srand(unsigned)tim

c rand srand-[请教]C伪随机函数rand() 的相关问题

问题描述 [请教]C伪随机函数rand() 的相关问题 /* rand0.c ---产生随机数*/ /*使用ANSI C 可移植算法*/ static unsigned long int next=1; //种子 int rand0(void) { next=next*1103515245+123456; return (unsigned int)(next/65536)%32768; } void srand0(unsigned int seed) { next=seed; } /*r_dri

java随机数Math.random()函数用法

1.Math库里的static(静态)方法random() 该方法的作用是产生0到1之间(包括0,但不包括1)的一个double值.  代码如下 复制代码 double rand = Math.random(); 2.通过Random类的对象 程序可生成许多不同类型的随机数字,做法很简单,只需调用方法nextInt()和nextFloat()即可(也可以调用nextLong()或者nextDouble()).传递给nextInt()的参数设置了所产生随机数的上限,而其下限为0. 如果在创建Ran

JSP实现图形验证码-汉字

js|汉字|图形|验证码 <%@page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"%> <%!  //create by smallnest  //email: smallnest@gmail.com  //website:www.kuaff.com  //生成随机颜色  Color getRandColor(R

JSP生成中文图片验证码

js|验证码|中文 <%@page contentType="image/jpeg" pageEncoding="UTF-8" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"%><%!  //生成随机颜色  Color getRandColor(Random random, int fc, int bc) {    if (fc > 255)

使用jsp生成彩色汉字验证码

js|汉字|验证码 <%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %> <%! //生成随机颜色 Color getRandColor(Random random,int fc,int bc) { if(fc>255) fc=255; if(bc>255) bc=255; int r=f

汉字验证码源码制作教程

教程|验证码|汉字 汉字验证码制作源代码如下: <%@page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"%> <%!   //create by smallnest   //email: smallnest@gmail.com   //website:www.kuaff.com   //生成随机颜色   Colo

运用Jsp技术生成彩色汉字验证码

一些网站采用了字母和数字的验证码,数字和字母加起来一共30多个,如果有心,还是能够通过方法识别出来. 我在网上看到一篇文章"jsp彩色验证码",我进行了加强,生成的验证码内容为汉字,可以方便应用在面向汉语网民的网站认证上. 当然,我还看到别人考虑的几种方法: 1.生成计算题,比如20+34*(23-12)=?,用户必须输入正确的答案才能通过验证,这个想法挺好,但是用户必须打开计算器进行计算,增加了用户的难度 2.问一些常见的问题,比如"人"这个字由几笔组成.这也是不