Herramientas de usuario

Herramientas del sitio


es:manual:items:generativos:siette.util.random

siette.uti.Random

La clase siette.util.Random emula una extension de la clase java.util.Random, pero permite redefinir os constructores de manera que todos los objetos creados a partir de esta clase compartan la misma semilla. Esto permite reproducir exactamente las instacias de preguntas generadas, con solo guardar la semilla, siempre y cuando no haya habido modificaciones en el orden de generación de números aleatorios. El objetivo es que dada una semilla se produzca siempre la misma instancia.

Esta clase tiene los siguientes métdos públicos:

Constructor

public Random() throws RandomException

Crea un objeto, en general no es necesario crear el objeto, ya que Siette lo crea internamente y en el código de las preguntas se utilizan métodos estaticos. Este método sirve simplemente para devolver una referencia al objeto principal, y para que la programación sea similar a la clase java.util.Random.

Semilla

public  static setSeed(long seed)
public static long getSeed()

Escribe o lee la semilla del objeto Random. En general no es necesario utilizar este método, y esta desaconsejando variar la semilla, ya que esto haría que la pregunta no pudiera reproducirse exactamente como se planteo. Son métodos usados por el sistema.

boolean

public  static boolean nextBoolean()

Devuelve un valor logico aleatoriamente (true o false)

double

public  static double nextDouble()

Devuelve un número real de tipo double con una distribución uniforme entre 0 y 1.

public  static double nextDouble(double min, double max, double step, String format)
public  static double nextDouble(double min, double max, String format)
public  static double nextDouble(double min, double max, double step)
public  static double nextDouble(double min, double max)

Devuelve un número real de tipo double con una distribución uniforme entre min y max (ambos inclusive). Si se añade un argumento step los valores que se generan serán siempre valores exactos que se obtienen añadiendo aleratoriamente a min un multiplo de step. Por ejemplo

  int x = Random.nextDouble(0, 2, 0.25);

genera aleatoriamente los valores {0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0}

Si se añade un argumento format con la especificación definida en java.text.DecimalFormat, se sigue devolviendo un número real de tipo double pero su valor se trunca para encajar con el formato. Por ejemplo

  int x = Random.nextDouble(0, 2, 1/3, "#.##");

genera aleatoriamente los valores {0.00, 0.33, 0.67, 1.00, 1.33, 1.67, 2.00}

public  static double nextGausian()

Devuelve un número real de tipo double con una distribución normal de media 0 y desviación típica 1. Los valores centrales tienen mayor probabilidad de ser generados. Se fuerza que todos los valores estén comprendidos entre -1 y 1.

public  static double nextGausian(double min, double max, String format)
public  static double nextGausian(double min, double max)

Son métodos similares a los que utiliza el método nextDouble pero utilizando una distribución nnormal de media $(max-min)/2$ y desviación típica proporcional a la anchura del intervalo. En este caso no tiene sentido utilizar el parámetro step.

float

public  static float nextFloat(float min, float max, float step, String format)
public  static float nextFloat(float min, float max, String format)
public  static float nextFloat(float min, float max, float step)
public  static float nextFloat(float min, float max)
public  static float nextFloat()

Son métodos similares a nextDouble, pero devolviendo un número de tipo float.

int

public  static double nextInt(int min, int max, int step, String format)
public  static double nextInt(int min, int max, String format)
public  static double nextInt(int min, int max, int step)
public  static double nextInt(int min, int max)
public  static double nextInt(int max)
public  static double nextInt()
public  static double nextPositiveInt()

Son métodos simialres nextDouble, pero con números de tipo int. Si no se especifica el valor min se toma min=0. Si no se especifica ningún argumento se seleciona un número entero cualquiera entre entre $-2^{31}$ y $2^{31}$ con una distribución uniforme. La última función selecciona solamente números enteros positivos entre 0 y $2^{31}$.

long

public  static double nextLong(long min, long max, long step, String format)
public  static double nextLong(long min, long max, String format)
public  static double nextLong(long min, long max, long step)
public  static double nextLong(long min, long max)
public  static double nextLong(long max)
public  static double nextLong()

Son métodos similares a nextInt pero que devuelven números de tipo long entre $-2^{63}$ y $2^{63}$ con una distribución uniforme. 1)

format

public static String format(double value, String format)
public static String format(float value, String format)
public static String format(long value, String format)
public static String format(int value, String format)
public static String format10(double value, String format)

La función format llama a la clase java.text.DecimalFormat para construir una representación del número value que se le pasa como argumento.

La función format10 crea una represenación en HTML equivalente a la notación cientifica. El atributo format se aplica solo a la mantisa. Por ejemplo el número la instruccion:

 String st = Random.format10(299792, "#");

da como resultado

 3 x 10<sup>5</sup> 

que en HTML se muestra como: <html>3 x 105</html>

select

public static Object select(List list)
public static Object select(Set set)
public static Object select(Object[] obj)
public static String select(String[] obj)
public static double select(double[] obj)
public static float select(float[] obj)
public static long select(long[] obj)
public static int select(int[] obj)

Las funciones select sirven para seleccionar un objeto al azar a partir de una colección de objetos, ya sea una lista, un conjunto o un array de elementos. Por ejemplo:

 String color = Random.select(new String[] {"rojo","azul","verde","amarillo"});
 

selecciona aletoriamente una cadena de caracteres que representa uno de estos cuatro colores.

Barajar y permutar

public static List shuffle(List list)
public static Object[] shuffle(Object[] obj)
public static String[] shuffle(String[] obj)
public static double[] shuffle(double[] obj)
public static float[] shuffle(float[] obj)
public static long[] shuffle(long[] obj)
public static int[] shuffle(int[] obj)

Estas funciones devuelven un objeto igaul que el que reciben pero con los elementos en un orden aleatorio Por ejemplo, la isntruccion:

  int nums = {0,1,2,3,4,5,6,7,8,9}
  nums  = Random.shuffle(nums);

hace que el valor de la variable nums cambie a:

  4,6,2,7,8,3,0,9,1,5
public static int[] permutation(int n)

La funcionpermutacion hace exactamente lo mismo que barajar en el ejemplo anterior, pero solo hay que indicarle el numero de valores enteros que se desea permutar. Es decir, para obtener el mismo resultado que el ejemplo anterior bastaria con utilizar la llamada a la funcion:

  int nums = Random.permutacion(9);

Otras funciones

public static String code(int n)

Devuelve un array de n caracteres aleatorio.

public static Object[] toObjectArray(List list)

Transforma una lista en un array de objetos.

public static List toList(Object[] list)

Transforma un array de objetos en una lista de objetos.

1)
Segun la documentación de java, la funcion no devuelve todos los posibles valores de tipo long, ya que la semilla está limitada a 48 bits.
es/manual/items/generativos/siette.util.random.txt · Última modificación: 2021/05/24 16:50 por root

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki