相关疑难解决方法(0)

如何从字符串中获取0到1700之间的随机数?

目前我正在与之合作

double fRand(double fMin, double fMax)
{
    double f = (double)rand() / RAND_MAX;
    return fMin + f * (fMax - fMin);
}

double RangeFinder::getRange(void) {
  return fRand(0, 1700);
};


char range[12];
double r = rangeFinder.getRange();
snprintf(range, 11, "range: %d", r);
Run Code Online (Sandbox Code Playgroud)

但它不给我之间0,1700它给我之间-99,999(我认为).我有一种感觉,msb正在将数千个地方解释为负面.

有什么问题?


编辑

固定版本

double fRand(double fMin, double fMax)
{
    double f = (double)rand() / RAND_MAX;
    return fMin + f * (fMax - fMin);
}

double RangeFinder::getRange(void) {
  return fRand(0, 1700);
}; …
Run Code Online (Sandbox Code Playgroud)

c++

3
推荐指数
1
解决办法
119
查看次数

如何使用随机浮点数填充数组?

我希望找到一种用随机浮点数填充数组的方法.我的数组大小为50,我希望用1-25范围内的随机浮点数填充此数组.这是我到目前为止所拥有的.我非常感谢任何人可以提供的任何提示或答案.谢谢.

#include <iostream>

#include <ctime>

#include <cstdlib>

using namespace std;


int main()

{

float myArray[50];


for(int i = 1; i <= 25; i++)

{

srand(time(0));


myArray[i] = (rand()% 50 + 1);

cout << myArray[i] << endl;



system("Pause");

return 0;

} 

}
Run Code Online (Sandbox Code Playgroud)

c++ arrays random floating-point

1
推荐指数
2
解决办法
1万
查看次数

如何在C中生成-1和1之间的随机数?

我正在尝试对任务进行蒙特卡罗积分。这涉及在 x 和 y 轴上生成 -1 到 1 之间的随机数......我想我知道如何生成 0 到 1 之间的随机数,但不知道如何将其更改为 -1 到 1 之间。任何帮助将不胜感激,并在此先感谢...这是(一些)到目前为止我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

double x,y;


int main(){

srand(time(NULL));

x=rand()/(double)(RAND_MAX);
y=rand()/(double)(RAND_MAX); /*HOW DO I MAKE THIS FROM -1 TO 1*/

return 0;
}
Run Code Online (Sandbox Code Playgroud)

*我很确定一旦我知道如何生成这些负随机数,我就可以自己解决剩下的问题,所以上面的代码只是问题的一小部分(其余的我打算自己做)

c random numbers negative-number

1
推荐指数
2
解决办法
3555
查看次数

在C++中生成随机浮点数不起作用(Visual Studio 2013)

我知道这个问题有很多重复,但我的问题是不同的.我想要做的是在[-0.5,0.5]范围内生成一个简单的随机浮点数.我一直在使用的是这个链接中表达的公式:

C++随机浮点数生成

我需要两个不同的随机浮点数jitter_dxjitter_dy.根据上面链接的公式,我有:

float jitter_dx = -0.5f + static_cast <float> (rand()) / (static_cast <float> (RAND_MAX / (0.5f - (-0.5f))));
float jitter_dy = -0.5f + static_cast <float> (rand()) / (static_cast <float> (RAND_MAX / (0.5f - (-0.5f))));
Run Code Online (Sandbox Code Playgroud)

现在,我的问题很奇怪,因为当我尝试调试代码时,jitter_dx似乎总是相同(或略有不同),jitter_dy而是随机生成.在此,我给你带来的价值jitter_dx,并jitter_dy在10个不同的调试会话:

0.213156521,0.123004854

0.215659022,0.323389411

0.216849267,0259575188

0.217856407,-0.460295409

0.218955040,0.147907972

0.220358908,-0.259910882

0.221335471,0.0202490091

0.224143207,0.204702914

0.225333393,0.140888691

你可以看到jitter_dx总是(差不多)相同.两个值都是在另一个值之后计算的,中间没有任何代码.你可以帮我找到问题吗?提前致谢.

c++ random floating-point visual-studio-2013

1
推荐指数
1
解决办法
334
查看次数

生成[0,1)c ++之间的随机数

我正在尝试生成一个在[0,1)之间均匀分布的随机数,我尝试过uniform_real_distribution但我不确切知道它是如何工作的.我在下面有这个代码,但它每次都会产生接近相同的数字〜.456

void RandomNumber()
{
srand(time(0));
double number=(double)rand()/((double)RAND_MAX+1);
cout<<"RANDOM NUMBER: "<<number<<endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ random

1
推荐指数
2
解决办法
6606
查看次数

奇怪的相同数字

我使用一些随机数作为我的"元启发式优化"计算的初始值.我使用MPI在不同的计算机上运行相同的优化程序.令人惊讶的是,我获得了很多相同的结果.例如,我使用40台主机,结果几乎没有不同的值.几乎6-7个值是相同的.实际上,我的结果可能相似,但它们必须不相同,因为我在程序开头给出了随机数作为首字母(在上面的例子中,我必须得到40个不同的值).如果我在同一台计算机上重复并顺序运行程序,它会产生不同的结果.

我怀疑这种情况是由随机数生成质量不足引起的.我怎么解决这个问题.我打开其他想法,可能会有不同的事情导致这个问题.

PS我srand( (unsigned) time(NULL) )在程序开始时使用一次来生成随机数字.然后,我通过使用生成[0,1]范围内的随机数(float)rand()/32767

我抱怨的结果的一个例子:

15.42161751
19.83328438
3.43446541
23.50453377
23.50453377
3.43446541
19.83328438
23.50453377
3.43446541
7.52127457
7.52127457
23.50453377
7.52127457
7.52127457
23.50453377
19.83328438
19.83328438
19.83328438
7.52127457
15.42161751
3.43446541
19.83328438
19.83328438
15.42161751
23.50453377
23.50453377
5.29145241
19.83328438
19.83328438
19.83328438
19.83328438
7.52127457
23.50453377
3.43446541
19.83328438
23.50453377
7.52127457
3.43446541
7.52127457
5.29145241
Run Code Online (Sandbox Code Playgroud)

c++ random optimization mpi

0
推荐指数
1
解决办法
165
查看次数

每次运行时计算不同的数字

我有一个多图,其中有1000个数字.现在我需要生成一个随机数.说它560.然后我将采取阵列的第560个元素.我用兰特.

int number = 0;
int size = mmap.size();
int rand = rand() % size + 1;
Run Code Online (Sandbox Code Playgroud)

但问题是,我正在运行这个程序n次.每次,我得到相同数量的随机值.每次运行程序时如何生成随机值.

  i tried using including random library. it gave error when i compile.
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
92
查看次数

C++随机数生成器根本不能正确生成数字

这是我的功能:

Random(int min, int max)
{
    srand(time(NULL));
    return (rand() % (max-min)) + 1;
    // or
    return (rand() % (max+min)) + 1;
    // or
    return (rand() % (max-min))
    // or
    return (rand() % (max+min))
};
Run Code Online (Sandbox Code Playgroud)

并且它不起作用,如果我说添加随机(5,10)它有时会显示15,5,4.我无法弄清楚,因为所有指南都说"这是它的假设"但是它不起作用.我错过了什么?

这个方法是课程的一部分.

我已尝试将srand(time(NULL))置于:

  1. 一点也不
  2. 在构造函数中
  3. 在方法中

没有结果.

rand()不应该返回0到1之间的值吗?我没有.

c++ random

-3
推荐指数
1
解决办法
352
查看次数

如何在c ++中生成5到25之间的随机数

可能重复:
在整个范围内均匀生成随机数
C++随机浮点数

如何在c ++中生成5到25之间的随机数?

#include <iostream>
#include <cstdlib>
#include <time.h>

using namespace std;

void main() {

    int number;
    int randomNum;

    srand(time(NULL));

    randomNum = rand();

}
Run Code Online (Sandbox Code Playgroud)

c++ random srand

-4
推荐指数
2
解决办法
3070
查看次数