السلام عليكــم ورحمـة الله وبركاتــه ،،
كيف يمكن توليد عدد عشوائي كسري باستخدام الدالة القياسية rand
وجدت هذه الطريقة ، المشكلة أن القيم لا تتغير بالشكل المطلوب .. أي أن الناتج في الغالب يكون متساوي وان اختلف فيكون في كسور بسيطة .
float Random::generateFloat(float minValue,float maxValue)
{
//TODO : Do I need assert here ?
if(minValue>maxValue)
{
float temp = minValue;
minValue = maxValue;
maxValue = temp;
}
srand(seed);
float result = (rand() / (static_cast<float>(RAND_MAX) + 1.0))* (maxValue - minValue) + minValue;
return (result);
}
//Main --- Test Random ---
float maxFloat = -1000;
float minFloat = 1000;
Random random;
for(int i=0;i<10;i++)
{
random.setSeed(time(0) + i);
float floatValue = random.generateFloat(11.5f,23.7f);
maxFloat = (floatValue > maxFloat? floatValue:maxFloat);
minFloat = (floatValue < minFloat? floatValue:minFloat);
std::cout << floatValue << " , ";
if(i%2 != 0)
std::cout << std::endl;
}//for
std::cout << "maxFloat " << maxFloat << "\nminFloat " << minFloat;
std::cout << std::endl;

