При использовании одного скрипта в котором генерируется строка в нескольких объектах - строка у всех одинаковая
В скрипте в функции Start() выполняется генерация случайной строки.
До запуска значение itemId пустое
Однако после запуска, когда происходит генерация, значения itemId заполняется в обоих объектах одинаковое.

Вот код генерации:
private string generateIID()
{
int length = 9;
StringBuilder stringBuilder = new StringBuilder();
System.Random random = new System.Random();
char letter;
int number;
for(int i = 0; i < length; i++)
{
double flt = random.NextDouble();
int isNumber = random.Next(3);
int shift = Convert.ToInt32(Math.Floor(25 * flt));
if(isNumber <= 1)
{
letter = Convert.ToChar(shift + 65);
stringBuilder.Append(letter);
} else
{
number = random.Next(10);
stringBuilder.Append(number);
}
}
return stringBuilder.ToString();
}
Почему так может происходить? Я гуглил, но не смог найти ответа.
Ответы (1 шт):
Автор решения: vp_arth
→ Ссылка
Вероятно, у new Random тот же seed. Он зависит от Ticks, если я не ошибаюсь.
Попробуйте new Random(Guid.NewGuid().GetHashCode());
Но лучше использовать один инстанс Random для всех генераций. Заведите статическое поле:
public static Random rand = new Random();
Хотя тут возможны проблемы с многопоточностью =)
