произвольно выберите файл в java [duplicate]

В то время как обещания и обратные вызовы хорошо работают во многих ситуациях, боль в задней части выражает нечто вроде:

if (!name) {
  name = async1();
}
async2(name);

. В итоге вы пройдете через async1; проверьте, не определено ли name или нет, и соответственно вызовите обратный вызов.

async1(name, callback) {
  if (name)
    callback(name)
  else {
    doSomething(callback)
  }
}

async1(name, async2)

Хотя в в порядке хорошо , это раздражает, когда у вас много подобных случаев и обработка ошибок.

Fibers помогает в решении проблемы.

var Fiber = require('fibers')

function async1(container) {
  var current = Fiber.current
  var result
  doSomething(function(name) {
    result = name
    fiber.run()
  })
  Fiber.yield()
  return result
}

Fiber(function() {
  var name
  if (!name) {
    name = async1()
  }
  async2(name)
  // Make any number of async calls from here
}

Вы можете проверить проект здесь .

58
задан thecoshman 23 April 2015 в 13:00
поделиться

10 ответов

public static int getRandom(int[] array) {
    int rnd = new Random().nextInt(array.length);
    return array[rnd];
}
114
ответ дан Chris Dennett 26 August 2018 в 09:27
поделиться

Используйте класс Random :

int getRandomNumber(int[] arr)
{
  return arr[(new Random()).nextInt(arr.length)];
}
2
ответ дан AlQafir 26 August 2018 в 09:27
поделиться

Взгляните на этот вопрос:

Как генерировать случайные целые числа в определенном диапазоне в Java?

Вы хотите создать случайное число от 0 до целых чисел - 1. Затем просто получите свой int из вашего массива:

myArray[myRandomNumber];
7
ответ дан Community 26 August 2018 в 09:27
поделиться

Java имеет класс Random в пакете java.util. Используя его, вы можете сделать следующее:

Random rnd = new Random();
int randomNumberFromArray = array[rnd.nextInt(3)];

Надеюсь, что это поможет!

0
ответ дан decden 26 August 2018 в 09:27
поделиться

используйте java.util.Random для генерации случайного числа между 0 и длиной массива: random_number, а затем используйте случайное число для получения целого числа: array[random_number]

3
ответ дан James.Xu 26 August 2018 в 09:27
поделиться

Поскольку у вас есть java 8, другое решение - использовать Stream API.

new Random().ints(1, 500).limit(500).forEach(p -> System.out.println(list[p]));

Где 1 - самый низкий int сгенерированный (включительно), а 500 - самый высокий (эксклюзивный). limit означает, что ваш поток будет иметь длину 500.

 int[] list = new int[] {1,2,3,4,5,6};
 new Random().ints(0, list.length).limit(10).forEach(p -> System.out.println(list[p])); 

Случайный из пакета java.util.

1
ответ дан Johnny Willer 26 August 2018 в 09:27
поделиться

Вы можете использовать генератор случайных чисел для генерации случайного индекса и вернуть элемент по этому индексу:

//initialization
Random generator = new Random();
int randomIndex = generator.nextInt(myArray.length);
return myArray[randomIndex];
10
ответ дан Luchian Grigore 26 August 2018 в 09:27
поделиться

Вы также можете использовать

public static int getRandom(int[] array) {
    int rnd = (int)(Math.random()*array.length);
    return array[rnd];
}

Math.random() возвращает double между 0.0 (включительно) до 1.0 (эксклюзивный)

Умножая это на array.length дает вам double между 0.0 (включительно) и array.length (эксклюзивным)

. Кастинг на int округляется, давая вам и целое число между 0 (включительно) и array.length-1 (включительно)

1
ответ дан ratchet freak 26 August 2018 в 09:27
поделиться

Вы также можете попробовать этот подход.

public static <E> E[] pickRandom_(int n,E ...item) {
        List<E> copy = Arrays.asList(item);
        Collections.shuffle(copy);
        if (copy.size() > n) {
            return (E[]) copy.subList(0, n).toArray();
        } else {
            return (E[]) copy.toArray();
        }

    }
-1
ответ дан Ravi Sapariya 26 August 2018 в 09:27
поделиться
package workouts;

import java.util.Random;

/**
 *
 * @author Muthu
 */
public class RandomGenerator {
    public static void main(String[] args) {
     for(int i=0;i<5;i++){
         rndFunc();
     } 
    }
     public static void rndFunc(){
           int[]a= new int[]{1,2,3};
           Random rnd= new Random();
           System.out.println(a[rnd.nextInt(a.length)]);
       }
}
0
ответ дан user 26 August 2018 в 09:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: