Rand() % 14 only generates the values 6 or 13(Rand() % 14 只生成值 6 或 13)
问题描述
每当我运行以下程序时,返回的值总是 6 或 13.
Whenever I run the following program the returned values are always 6 or 13.
#include <iostream>
#include <fstream>
#include <ctime>
#include <cstdlib>
using namespace std;
//void randomLegs();
//void randomPush();
//void randomPull();
//void randomMisc();
int main(int argc, const char * argv[])
{
srand(time(NULL));
//randomLegs();
cout << rand() % 14;
return 0;
}
今天和昨天我已经运行了将近一百次这个程序.
I have run the program close to a hundred times during today and yesterday.
谁能告诉我我做错了什么?
Can anyone tell me what I'm doing wrong?
谢谢.
顺便说一下,如果我将 rand() 的范围更改为 13 或 15,它就可以正常工作.
By the way, if I change the range of rand() to say 13 or 15 it works just fine.
推荐答案
我可以使用 Xcode 5 在 Mac OS X 10.9 上重现该问题 - 看起来它实际上可能是一个错误,或者至少是 的限制rand()
/srand()
在 OS X 10.9 上.
I can reproduce the problem on Mac OS X 10.9 with Xcode 5 - it looks like it might actually be a bug, or at least a limitation with rand()
/srand()
on OS X 10.9.
我建议您使用 arc4random()相反,它比 rand()
效果更好,并且不需要随机化种子:
I recommend you use arc4random() instead, which works a lot better than rand()
, and which doesn't require that you randomize the seed:
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, const char * argv[])
{
cout << (arc4random() % 14) << endl;
return 0;
}
测试:
$ g++ -Wall -O3 srand.cpp && ./a.out
5
$ ./a.out
8
$ ./a.out
0
$ ./a.out
8
$ ./a.out
11
$ ./a.out
8
$ ./a.out
3
$ ./a.out
13
$ ./a.out
9
$
这篇关于Rand() % 14 只生成值 6 或 13的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Rand() % 14 只生成值 6 或 13
基础教程推荐
- 从 std::cin 读取密码 2021-01-01
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01
- Windows Media Foundation 录制音频 2021-01-01
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01
- 使用从字符串中提取的参数调用函数 2022-01-01
- 为什么语句不能出现在命名空间范围内? 2021-01-01
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01
- 管理共享内存应该分配多少内存?(助推) 2022-12-07