Редактировать: Данная проблема решается. Если вы хотите помочь в решении другой проблемы, посетите Java Biasing Random Numbers in a Triangular Array.Java-Math.random(): выбор элемента из треугольной решетки 13 на 13
Я занимаюсь умножением, поэтому я выбираю 2 числа от 0 до 12 включительно. Если бы я сделать это так:
int num1 = (int)(Math.random() * 13);
int num2 = (int)(Math.random() * 13);
квадраты (0x0,1x1,2x2 и т.д.) собирают половину времени (потому что 1х2 такая же, как 2х1). Как я могу сделать все комбинации, выбранные на той же частоте? Имеются 91 возможные комбинации (n (n + 1)/2). Если это помогает, вот 13 по 13 треугольный массив:
{{0},
{0,0},
{0,0,0},
{0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0}};
Я пытался выбирать первое число и дает второе число на 50% шанс быть первым. Это не сработало. Я попытался дать второе число 1/91 шанс стать первым. Это привело к тому, что меньшие числа были выбраны гораздо большим количеством раз (около 7/91 времени, это плавное, изогнутое увеличение). Я думал о наличии единственного случайного числа: int roll = random.next(91)
, а затем разбил его на 2 записи (например, координату (x, y)), но я не мог понять, как разбить ее.
Параметр 'INT рулет = random.next (91)' стратегии будет работать нормально. Вам просто нужно найти формулу, которая идентифицирует, где заканчивается одна «строка», а другая начинается. –
вот где я застрял – Justin
для реализации вероятности в Java с помощью math.random посмотреть [здесь] [1] [1]: http://stackoverflow.com/questions/8183840/probability-in- java – Gander7