我希望在-30到30之间生成数字。
我已经在Generating random integer from a range中尝试了解决方案,它给了我这些结果:
111875657664
151875657664
211875657664
-41875657664
-151875657664
171875657664
-201875657664
-131875657664
-301875657664
-271875657664
这是我的功能:
int Random::genRandom() {
int rnd;
rnd = (rand()%61)-30;
return rnd;
}
这是主要的源文件:
#include "Random.h"
#include <iostream>
using namespace std;
int main() {
Random random;
int randomas;
for(int i=0; i<10; i++) {
randomas = random.genRandom();
cout << randomas << "\n";
}
return 0;
}
我该怎么办?
答案 0 :(得分:2)
试试这个:
srand (time(NULL));
for(int i = 0; i < 10; i++)
{
int rnd;
rnd = rand() % (60) - 30;
cout << rnd << std::endl;
}
工作示例here
答案 1 :(得分:2)
这没有解决OP的奇怪数字问题(我似乎无法重现),只是为了解决这个问题。 C ++ 11和更好的方法提供了许多不同的方法来解决rand
糟糕的问题。
我,欢迎我们new random number generating overlords。
#include <iostream>
#include <random>
int main()
{
std::random_device device;
// build a random number generator for seeding
std::default_random_engine engine(device());
// nothing fancy. Assuming the compiler implementors know what they are doing
// seeding it with a nice random number from above.
std::uniform_int_distribution<int> distribution(-30, 30);
// generate uniformly distributed numbers from -30 to 30
int randomas;
for(int i=0; i<10; i++) {
randomas = distribution(engine); // Bless me with a number, divine masters!
std::cout << randomas << "\n"; // Witness the number all shiny and chrome!
}
return 0;
}
答案 2 :(得分:1)
试试这段代码。它是线性同余生成器在您的问题中的应用。发电机具有很好的性能。
$('.header-nav li:nth-child(2)').hover(
function() {
$( this ).html('<div class="new-messages-f">77</div><a href="">Account</a>'); // Replaced
},function() {
$( this ).html('<div class="new-messages-f">89</div><a href="">Ac</a>'); // Original
});