public static void RandomFillMassive
var lenghtIndex = # 40; argArray as System. Array # 41 ;. Length;
var countSwap = Random. Range # 40; 50, 100 * lenghtIndex # 41; ;
for # 40; int i = 0; i
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
RandomFillMassive
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
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; ;