Генератор чисел

public static void RandomFillMassive # 40; T # 91; # 93; argArray # 41; # 123;
var lenghtIndex = # 40; argArray as System. Array # 41 ;. Length;
var countSwap = Random. Range # 40; 50, 100 * lenghtIndex # 41; ;

for # 40; int i = 0; i var index0 = Random. Range # 40; 0, lenghtIndex # 41; ;
loop.
var index1 = Random. Range # 40; 0, lenghtIndex # 41; ;
if # 40; index1 == index0 # 41;
goto loop;
var temp = argArray # 91; index0 # 93; ;
argArray # 91; index0 # 93; = argArray # 91; index1 # 93; ;
argArray # 91; index1 # 93; = Temp;
# 125;
# 125;


Користуватися таким чином

1) Припустимо є 2 масиву
var someElements = new int [5];
var someGOs = new GameObject [5];

2) Переставляємо елементи рандомно в потрібний момент за логікою гри
RandomFillMassive(SomeElements);
RandomFillMassive(SomeGOs);

3) Читаємо кожен елемент масиву через цикл someElements [index]. або someGOs [index].

Kayler писал (а): я робив циклом, спочатку задаємо наприклад в масив з 10 значень рандомно, а потім циклом заміняю повторювані до тих пір поки не буде повторюваних

Теоретично може зависнути) Та й довго це.
Простіше дійсно заповнити числами по зростанню, а потім перемішати його.

Розробник Atom Fishing - Риболовля на поплавок, донку, нахлист, блешню в пост'ядерний період.
Розробник Atom Fishing II - Перша 3D MMO про риболовлю

Нічого перемішувати не треба.

1. Створюємо масив на N елементів, заповнюємо числами від 0 до N-1
2. Генеруємо дійсне число від 0 до 1, множимо на N-1, округляємо вниз до цілого
3. Міняємо місцями цей елемент масиву з останнім.
4. Останній елемент масиву беремо замість випадкового числа.

Потрібна допомога? Самі, самі, самі, самі, самі. робимо все самі

чесно кажучи зависання не помітив, все відбувалося миттєво)


Я ж кажу теоретично, а не те, що реально зависне. Ну, ось наприклад, заповнити масив в 10 елементів 8ю неповторяющимися цифрами)) Все, Дедлок у вас.

Розробник Atom Fishing - Риболовля на поплавок, донку, нахлист, блешню в пост'ядерний період.
Розробник Atom Fishing II - Перша 3D MMO про риболовлю

Пропоную згенерувати масив унікальних значень, а потім просто видавати їх по одному:

var arrSize. int = 10;
private var randomValue. int # 91; # 93; ; // масив унікальних значень
private var nAddedValues. int = 0; // скільки унікальних значень вже додано в масив

function Start # 40; # 41;
# 123;
randomValue = new int # 91; arrSize # 93; ;
fillArrayRandomValues # 40; randomValue. 0. 100 # 41; ;
/ * For (value in randomValue)
Debug.Log ( "Value:" + getRandomValue ());
>; * /
# 125; ;

function fillArrayRandomValues # 40; array. int # 91; # 93 ;. min. int. max. int # 41 ;. void
# 123;
nAddedValues ​​= 0;
for # 40; value in randomValue # 41;
# 123;
do
# 123;
value = Random. Range # 40; min. max # 41; ;
# 125; while # 40 ;. isUnique # 40; value # 41; # 41; ;
//Debug.Log("Unique value: "+ value +" is added. ");
nAddedValues ​​++;
# 125; ;
# 125; ;

function isUnique # 40; value. int # 41 ;. boolean
# 123;
for # 40; var i. int = 0; i # 123;
if # 40; value == randomValue # 91; i # 93; # 41; return false; // таке значення вже є в масиві
# 125; ;
return true;
# 125; ;

function getRandomValue # 40; # 41 ;. int
# 123;
return randomValue # 91; - nAddedValues # 93; ;
# 125; ;

Схожі статті