Как я мог поместить свой частный int в публичный int - PullRequest
0 голосов
/ 08 ноября 2019

Я хочу скремблировать массив с помощью Math.random несколько раз, но я не знаю, как поместить случайное int в шифрование и использовать случайное int несколько раз.

 public static void scramble(int[] array){ 
  for(int i = 0 ; i < array.length - 1; i++){
     int temp = array[i];
     array[i] = array[random];
     array[random] = temp;}}

public int random (){
  return (int)(Math.random() *9) + 1;}

Вывод

100 101 102 103 104 105 106 107 108 109 //Default
 101 104 102 105 103 106 108 109 100 107 //Scrambled
  100 101 102 103 104 105 106 107 108 109//Then sorted

Весь водитель

    import java.lang.Math;

public class Driver03{
   public static void main(String[] args){
      int[] array = {100, 101, 102, 103, 104, 105, 106, 107, 108, 109};
      print(array);
      scramble(array);
      print(array);

      print(array);}

   public static void print(int[] array){
      for(int x = 0; x < array.length; x++){
         System.out.print(" " + array[x]);}
      System.out.println("");}

   public static void scramble(int[] array){ 
      int random = random();
      for(int i = 0 ; i < array.length - 1; i++){
         int temp = array[i];
         array[i] = array[random];
         array[random] = temp;}}

   public int random (){
      return (int)(Math.random() *9) + 1;}

}

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

Вот реализация, использующая алгоритм тасования Фишера-Йейтса .

  public static void main( String[] args )
  {
    int[] values = new int[] { 100, 101, 102, 103, 104, 105, 106, 107, 108, 109 };
    System.out.println( "Start: " + Arrays.toString( values ) );
    scramble( values );
    System.out.println( "Scrambled: " + Arrays.toString( values ) );
    Arrays.sort( values );
    System.out.println( "Sorted: " + Arrays.toString( values ) );
  }

  public static void scramble( int[] array )
  {
    // Scramble using the Fisher-Yates shuffle.
    Random rnd = new Random();
    for ( int i = 0; i < array.length - 1; i++ )
    {
      int random = i + rnd.nextInt( array.length - 1 - i );
      int temp = array[ random ];
      array[ random ] = array[ i ];
      array[ i ] = temp;
    }
  }

Он не использует Math.random(), а вместо него Random.

0 голосов
/ 08 ноября 2019

Во-первых, вы должны вызвать случайную функцию, такую ​​как "random ()", а не просто random

попробуйте этот код:

public static void scramble(int[] array){ 
  int random = random();
  for(int i = 0 ; i < array.length - 1; i++){
     int temp = array[i];
     array[i] = array[random];
     array[random] = temp;}}

public int random (){
 return (int)(Math.random() *9) + 1;}
...