Как рандомизировать и распечатать отдельные элементы массива и связать их с Math.random () [duplicate]

Вопрос был:

Как вернуть ответ от асинхронного вызова?

, который может быть интерпретирован как:

Как сделать синхронный асинхронный код синхронным?

Решение будет состоять в том, чтобы избежать обратных вызовов и использовать комбинацию Promises и async / await.

Я хотел бы привести пример для запроса Ajax.

(Хотя он может быть записан в Javascript, я предпочитаю писать его на Python и компилировать его в Javascript, используя Transcrypt . Это будет достаточно ясно.)

Позволяет сначала включить использование JQuery, чтобы $ был доступен как S:

__pragma__ ('alias', 'S', '$')

Определить функцию, которая возвращает Promise, в этом случае вызов Ajax:

def read(url: str):
    deferred = S.Deferred()
    S.ajax({'type': "POST", 'url': url, 'data': { },
        'success': lambda d: deferred.resolve(d),
        'error': lambda e: deferred.reject(e)
    })
    return deferred.promise()

Использовать асинхронный код, как если бы он был синхронным:

async def readALot():
    try:
        result1 = await read("url_1")
        result2 = await read("url_2")
    except Exception:
        console.warn("Reading a lot failed")

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 в 05:21
поделиться

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

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

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

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

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

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

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

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

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

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

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

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

Поскольку у вас есть 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 в 05:21
поделиться

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

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

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

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 в 05:21
поделиться

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

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 в 05:21
поделиться
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 в 05:21
поделиться
Другие вопросы по тегам:

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