tipos tinaco rotoplas precio para flotador fl16 electroniveles electronivel electrico diagrama control conexion cisterna ceisa bomba agua c++ random

c++ - tinaco - Generar flotación aleatoria entre dos flotadores



flotador electrico rotoplas (4)

Sé que esta es una pregunta bastante simple, pero no soy muy bueno en matemáticas.

Sé cómo generar un flotante aleatorio entre 0 y 1:

float random = ((float) rand()) / (float) RAND_MAX;

  • ¿Pero qué, si quiero una función que tenga un rango de dos flotantes, devuelve un flotante pseudoaleatorio en ese rango?

Ejemplo:

RandomFloat( 0.78, 4.5 ); //Could return 2.4124, 0.99, 4.1, etc.


Supongamos que tiene MIN_RAND y MAX_RAND que definen los rangos, entonces puede tener lo siguiente:

const float MIN_RAND = 2.0, MAX_RAND = 6.0; const float range = MAX_RAND - MIN_RAND; float random = range * ((((float) rand()) / (float) RAND_MAX)) + MIN_RAND ;

Esto le proporcionará el número escalado a su rango preferido. MIN_RAND, MAX_RAND puede tener cualquier valor, como por ejemplo 2.5, 6.6 Entonces, la función podría ser como:

float RandomFloat(float min, float max) { return (max - min) * ((((float) rand()) / (float) RAND_MAX)) + min ; }


Aleatorio entre 2 flotadores:

float random_between_two_int(float min, float max) { return (min + 1) + (((float) rand()) / (float) RAND_MAX) * (max - (min + 1)); }

Aleatorio entre 2 int:

int random_between_two_int(float min, float max) { return rand() % (max - min) + min + 1; }


float RandomFloat(float a, float b) { float random = ((float) rand()) / (float) RAND_MAX; float diff = b - a; float r = random * diff; return a + r; }

Esto funciona devolviendo algo más, donde algo está entre 0 y ba que hace que el resultado final se encuentre entre a y b .


float RandomFloat(float min, float max) { // this function assumes max > min, you may want // more robust error checking for a non-debug build assert(max > min); float random = ((float) rand()) / (float) RAND_MAX; // generate (in your case) a float between 0 and (4.5-.78) // then add .78, giving you a float between .78 and 4.5 float range = max - min; return (random*range) + min }