我想知道如何在一个固定位置得到一个随机数,所以当我回到那个位置时,我会看到相同的随机数。
首先,我尝试了这样的方法:
int getRand( int x , int y )
{
srand( x * y );
return rand();
}
但是这里-1 * -1和1 *1是一样的,所以我会得到很多对称性。
然后我试着:
int getRand( int x , int y )
{
srand( x * ( 1 << 12 ) + y );
return rand();
}
和
int getRand( int x , int y ) //
我想在一个函数中使用outf,但当我尝试它时,显示了“未定义”的错误。
我使用的是visual studio 2013,下面是我的代码
int main(){
int costumer;
int d;
cout <<"Enter Number : ";
cin >> costumer;
d = costumer;
int *Erand = new int[d]; //Random Number 1
int *Srand = new int[d]; //Random Number 2
int *SumArrays = new int[d]; // su
我和srand()有点问题。只有当我使用一个数字作为参数时,它才有效,例如srand(1234),但当我尝试将它与'n‘或与时间(如下所示)一起使用时,randint()会一直返回相同的值。
#include <iostream>
#include <experimental/random>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
srand(time(nullptr));
for (int i = 0; i <
我只想知道这个srand函数是如何工作的通过传递时间(NULL)作为参数
int Secret; // variable declaration
srand(time(NULL)); //calling srand function
Secret = rand() % 10 + 1; //generation random no between 0 and 10
cout<<Secret;
我使用这个函数生成随机整数。
int rnd(int min, int max)
{
static int srand(time(0));
return min + rand() % max;
}
是对的吗?可能更好的移动srand(time(0));的主要功能?如下所示:
int rnd(int min, int max){
return min + rand() % max;
}
int main(){
srand(time(0));
..............
}
在我的主要函数中,下面的函数片段被循环,以保持生成0到4之间的两个数字。第一次循环时,它工作得很好,但第二次它被核心转储。我不确定是因为其他地方的bug,还是我没有正确使用rand and srand。这里是C语言的新手。
void generate_player2_move(char board[][SIZE], int row, int col) {
//segmentation fault (core dumped) somewhere around here.
int randrow, randcol;
srand((unsigned) randrow);
是否允许srand(0)具有与srand(1)相同的效果?
C11,7.22.2.2 srand函数(结缔组织增加):
srand函数使用参数作为新序列的种子,伪随机数将通过随后对rand的调用返回。
然而,在glibc中,srand(0)有作为srand(1)。
/* We must make sure the seed is not 0. Take arbitrarily 1 in this case. */
if (seed == 0)
seed = 1;
因此,伪随机数的通过对rand的后续调用返回,这是令人困惑的.
额外:我们看到,在MSVC中,srand
我试图用C语言的rand()函数让我的程序返回一个随机数-5,5。程序运行正常,但我不喜欢每次我编译代码时都给出2个警告的事实。代码如下:
#include <time.h>
#include<stdio.h>
int main(int argc, char *argv[]){
int randomNumber = 0;
for (int index = 1; index < argc; index++) {
printf("The %d is %s\n", index, argv[index]);
}
当你这样做时,C rand()和srand()函数是非常有用的:
srand(SEED);
for()
{
//doing something with one thing using rand()
}
srand(SEED);
for()
{
//doing something with other thing using rand()
}
我可以在SystemVerilog中有这样的东西吗?是的,我知道$urandom(SEED),但问题是它应该扫描一次,然后使用rand()多次
int getRand(unsigned int seed) {
int rNum; // Random Number.
srand(seed);
rNum = (rand() % // Whatever I need here.
}
或者,在应用程序中只使用srand(time(nullptr))和rand()会有更好的性能吗?
谢谢,
约翰尼·P。
Gcc编译器消息:
passing argument 1 of ‘srand’ makes integer from pointer without a cast [-Wint-conversion]
too many arguments for format [-Wformat-extra-args]
我的代码:
#include<stdlib.h>
#include<unistd.h>
#include<stdio.h>
#include<sys/wait.h>
void main(int argc,int* argv[])
{
sr
据我所知,如果不更改种子号,rand()函数将生成相同的运行号。这就是srand()进来的原因。时间总是在变化,所以我知道您应该将time(null)参数传递给srand。我的问题是下面的代码从一个教程网站。
int main()
{
int i, n=5;
time_t t;
/* Intializes random number generator */
srand((unsigned) time(&t));
/* Print 5 random numbers from 0 to 50 */
for( i = 0 ; i <
srand( (unsigned)time(null))没有工作,尽管我也包含了stdlib.h库。它说time是一个未定义的单词,因为它是一个错误。
int i, max = 16, a[16];
for (i = 0; i < 16; i++)
a[i] = i;
srand((unsigned) time_t( NULL));
for (int i = 0; i < 16; i++) { // shuffle array
int temp = a[i];
int randomIndex = rand() % max;
a