res = input * random.nextInt (100)/100.0;
Explicación:
se toma un número entero n, y se multiplica con algo. Si este algo es un número como 34.56, llamamos a la parte anterior al dígito decimal w (parte entera) y la parte detrás de .xy.
Si multiplica esto con n, termina con (n * w) + (n * (x/10)) + n * (y/100). Nunca habrá una cifra fraccional de 3 partes detrás del punto, ¿está de acuerdo?
Podemos combinar x e y a una sola parte, y di (n * w) + (n * (x/100)), y XY es sólo el nombre de algo de 0 a 100.
Como la parte anterior al punto decimal puede ser arbitrariamente grande, puede calcularla por separado, si necesita algo más que 0. Pero debe definir un rango de alguna manera. Si toma un entero aleatorio R para esa parte:
res = input * R * random.nextInt (100)/100.0;
¿Necesita el divisor explicityl?
div = 100.0/(R * random.nextInt (100));
Scala es siempre útil, al probar código fragmenst:
val r = util.Random
r: util.Random.type = [email protected]
scala> def res (input: Int) = input * r.nextInt (100)/100.0;
res: (input: Int)Double
scala> (1 to 20).map (res)
res338: scala.collection.immutable.IndexedSeq[Double] =
Vector(0.48, 1.58, 0.48, 2.8, 0.15, 1.98, 5.67, 3.36, 6.93, 6.0, 9.02, 0.48, 7.41, 6.44, 9.6, 1.92, 16.66, 5.94, 7.98, 18.4)
Lo que debería ser el rango de los divisores y los dividendos? –
No es una respuesta, así que lo publico como un comentario, pero asegúrese de entender este documento, ya que podría afectar su solución: http://download.oracle.com/docs/cd/E19957-01/ 806-3568/ncg_goldberg.html – JasCav
¿Qué números son los aleatorios aquí: los divisores o los dividendos? Si necesita exactamente 1 o 2 lugares decimales, ¿por qué no puede simplemente trabajar con enteros y dividir por 100 más adelante? –