使用rand()函数生成ascii值

时间:2010-08-25 22:17:43

标签: c++

int RandInt(int a, int b){
    return (rand()%b+a);
}

我想生成随机字符值,所以我称之为

char asciiValue = RandInt(65, 90);

但我的输出并不是我所期望的......我做错了什么?

- 编辑为randint调用输入了错误的值,我的错误

3 个答案:

答案 0 :(得分:6)

如果您修改RandInt(low, high)函数以返回低和高之间的随机数,可能会更好。

int RandInt(int low, int high) {
  return low + rand() % (high - low + 1);
}

这样,获得小写字符将非常简单:

const char c = RandInt('a', 'z');

答案 1 :(得分:3)

RandInt(90, 90)将返回一个介于90和179之间的整数。值90代表一个'Z',你可以从那里得到一个值。

你要去哪个范围?

大写字母为RandInt(65, 26)。这是你期望的吗?

答案 2 :(得分:2)

Rand是一个随机数生成器,周期为2到32次幂,用于返回0到RAND_MAX范围内的连续伪随机数。

如果你在rand()%b + a之前使用randomize(),那么每次编译代码时输出都会不同,因为randomize()用随机值初始化随机数生成器。

当你传递randint(65,90)时,每当你得到一个符号作为输出时。

这里实际做的是

1)RAND()%B

这里rand()将生成一个0到90之间的随机数,因为你将a的值传递为90.

2)然后它会在这里添加一个等于65的值。你传递的值。

然后无论发现什么计算值,它都将被输出到屏幕上。

这对您有所帮助。