我知道要生成随机长数,我在
Java中执行以下步骤:
Random r = new Random(); return r.nextLong();
在C中,这个代码相当于什么?像这样?
return (long)rand();
解决方法
< cstdlib>提供int rand().您可能需要查看手册页.如果long大于系统上的int,则可以调用rand()两次并将第一个值放在高位字中.
#include <cstdlib> long lrand() { if (sizeof(int) < sizeof(long)) return (static_cast<long>(rand()) << (sizeof(int) * 8)) | rand(); return rand(); }
(long不可能与int的大小相同或者是int的两倍,所以如果理论上不完美则这是实用的)
检查你的文档rand()虽然.它不是一个伟大的发电机,但对大多数事情都足够好.您将要调用srand()来初始化随机数生成系统.其他人评论说Windows不会返回sizeof(int)随机位,所以你可能需要调整上面的内容.