Код работал на 20-66 MHz процессоре. За вашим космолетом не успевает.
@Qnoize5 жыл бұрын
Это потому, что 31 обладает хорошим свойством - его умножение можно заменить битовым сдвигом, который быстрее стандартного умножения: 31 * i == (i
@ExtremeCode5 жыл бұрын
А почему у Кнута было 21? D:
@s1mon8784 жыл бұрын
Подожди, подожди ты хочешь сказать что чел, блять, три недели изучал какую то там книгу, какого чувака (сорри если это важная книга важного чувака) для того чтобы ты пришёл и оставил коммент и ответил на вопрос, лол. (не знаю почему но это кажется очень смешным.)
@SoundsOfLimbo3 жыл бұрын
@@ExtremeCode bruh, 3:33
@ВасилийТрусиль3 жыл бұрын
Чел, ты этим сдвигом на 32 умножишь
@noki99303 жыл бұрын
@@ВасилийТрусиль ну так он вычитает i
@flachy77 жыл бұрын
Я сексуальная брюнетка с 3 размером груди.... лойс за разследование и Кнута в часности
@ЮрийР-щ7м7 жыл бұрын
тоже иногда палю как random с каждым запуском выдает одни и те же комбинации... лезть в него я конечно не буду))
@Rustamushko Жыл бұрын
Такая же проблема есть с генерацией неуникальных guid если их в цикле создавать. Для этого в winApi сделали специальную функцию, через которую запрашиваешь необходимое кол-во гуидов, которые надо сгенерить. Вангую, что в дотнете тоже есть метод, который генерит массив криптостойких рандомов, скорее всего надо искать в крипто неймспейсе. Короче, не нужно рандом в цикле теребонькать.
@ДЕРЖАВИН-т1л7 жыл бұрын
Всё заебись, но звук бы погромче
@СергейБолдин-в9м3 жыл бұрын
У тебя есть кнопки на телефоне! Сделай звук громче ими!
@LLlblKAPHO Жыл бұрын
Что бы сгенерировать рандомные числа, достаточно спросить у либеральных экономистов сколько будет стоить бакс завтра. Ну или если серьёзно, то почему бы не использовать шум интернета или поставить антенну в процессор, которая будет чувствительно воспринимать шум радио сигналов или даже электричества, или ловить шум фоновой радиации, фотонов и прочего электромагнитного излучения
@minty69893 жыл бұрын
2 варианта решения проблемы: 1. Заставит вашу программу немного затормозить. После вывода каждого рандомного числа делаем Thread.Sleep(7); Почему 7? Нечетное число после которго нельзя будет проследить последовательность генерации чисел, но можно и 13 и любые другие числа выше 1 (иначе будут генериться просто последовательные числы). Работает за счет того, что мы заставляем процесс уснуть на 7мс, что позволяет сгенерировать новое рандомное число опираясь на тайминги. 2. Сделать конструкцию new Random(i).Next(); - работает потому что как сид вместо времени мы подпихиваем кастомные числа.
@Rustamushko Жыл бұрын
Nice try. Только на 7ms не усыпишь поток, ибо «system clock resolution”.
@konstantingeist35876 жыл бұрын
они рандомны относительно своей последовательности, остальное твои проблемы :)
@miker58796 жыл бұрын
using Troschuetz.Random; вот норм генератор int temp = new TRandom(new NR3Generator()).Next(100); вообще топчик
@mikeefpv7 жыл бұрын
возможно правильнее использовать Random random = new Random(); вне (до)цикла итераций чтобы объект класса Random не создавался по одному и тому же значению времени что и дает по идее одинаковые выводы .Next();
@MrFrimko7 жыл бұрын
это понятно, но вопрос не в этом
@mikeefpv7 жыл бұрын
йоу, а в чем конкретно?
@MrFrimko7 жыл бұрын
почему происходит то что происходит, попытка понять в чем магия, почему рендом класс при инициализации в цикле выдает одинаковые числа(рандом же должен быть)
@mikeefpv7 жыл бұрын
я запросто могу ошибаться, но - при инициализации класса единственная случайная переменная из которой потом математически выводятся новые псевдослучайные числа - это время жизни пк с последнего запуска.(или около того) современные пк работают настолько быстро, что итерации цикла в котором есть и new и потом .next а потом заново - происходит условно мгновенно. таким образом эта единственная случайная переменная всегда одинаковая, а все что происходит дальше, это чистая математика которая опирается на эту переменную. а переменная(которая зависит от времени)- одна и та же. она еще не успела изменится, пк работает быстро. поэтому и вывод цикла одинаковый.
@AlexCSharp6 жыл бұрын
Mikee Tankovsky Собственно, автор ролика о том же. Но так практически все(а может и вообще все) цифровые генераторы работают, они все псевдогенераторы.Настоящий генератор можно сделать только аналоговым.
@DixStore7 жыл бұрын
Проблема в том что используется объект new Random внутри цикла for а если его вынести то все будет генерировать случайным
@IvanAndreev913 жыл бұрын
Ну 1 раз из миллиона понадобится сгенерировать случайное число внутри набора объектов, которые получают значения каких-то свойств случайным образом во время инициализации, но этого не поизойдёт по причине сабжа и настанет апокалипсис
@grafgeleon24207 жыл бұрын
Интерсно, годно, даёшь ещё
@soltaurus4 жыл бұрын
Дружище, ты инициализируешь класс одним и тем же значением, а именно меткой времени с точностью до мс. Странно было бы ожидать другого результата
@КвасИСышка6 жыл бұрын
Умники, которые говорят что-то вроде этого "Там ко-ко-ко надо было ко-ко инициализировать до цикла ко". Автор показывает, сам алгоритм, и то чтобы вы не напоролись на этот кол, когда подумаете решить через new Random().Next()
@paschanchik6 жыл бұрын
хз. У меня, даже если я инициализировал "До", работало так же хуево
@ohnocoder3 жыл бұрын
Видео: *научное* Я: *научный* ExtremeCode: Так б@$$* что за x^%%^
@Стряпаемпирожкитут7 жыл бұрын
Снимаю шляпу, господа
@mortimersmith3594 жыл бұрын
2.38 отсылочка топ
@oganovdavid7 жыл бұрын
я оруууу)))))))))))) соскучился по вашим видосам)) //замечу что тут написано, что 31 - очень важное число))) ахаххаха
@musikuma84244 жыл бұрын
По факту проблема начального значения, и не в чём ином, ибо генератор псевдослучайных чисел. Решение проблемы повтора с System.Random: 1. Использование экземпляра вне цикла. 2. Передача параметра (System.Int32) System.DateTime.Now.Ticks (или другого, что будет обновляться быстрее выполняемой операции) 3. Применить другой алгоритм генерации.
@fartuna7773 жыл бұрын
Ответ на главный вопрос жизни, вселенной и всего такого
@Buarpa5 жыл бұрын
Братюни спасибо за видео, поделюсь наблюдениями ... ВАЖНО !!! люблю делать автозаполнение объектов для тестирования, имена / числа / etc... числа генерируються с упором на время, лучше всего для объяснения подходит C++ по тому что я его немного знаю в функции rand() не знаю каким образом есть генератор ОДИНАКОВЫХ чисел со входящим параметром - что это значит ? если мы пишем for (i=0; i< x3 ;i++) rand(i) у нас будут светиться одинаковая последовательность чисел, для большей рандомизации чисел придумали srand(time(nullptr)); при наличии функции rand() в поле видимости srand(time(nullptr)) в функцию rand(x) передаётся время вплоть до Милисекунд*(текущее время), в секунде по принципам математики 100 МилиСекунд, так вот ... есть функция sleep(1000) которая делает простой программы в месте её написания, из расчёта что 1000 = 1 секунда, что б сделать полный рандом нужно между генератором случайных чисел поставить sleep(11) !!! 11 - не меньше, по тому что 10 ещё не заходит на первую милисикунду*(тестил) так что при написании кода у вас будет полный рандом ... пример: #include // for time(nullptr) #include #include // for Sleep(11); using namespace std; int main() { std:srand(time(nullptr)); for (int i = 0; i < 100; i++) { Sleep(11); // Thread.Sleep(); // for C# std::cout
@Buarpa5 жыл бұрын
+ Sleep(11); нужно прописывать в конструкторах объектов если нужен рандом ...
@pnt77916 жыл бұрын
4 8 15 16 23 42
@andreyandrey22234 жыл бұрын
Что это?
@pnt77914 жыл бұрын
@@andreyandrey2223 4 8 15 16 23 42
@andreyandrey22234 жыл бұрын
@@pnt7791 Чё?
@pnt77914 жыл бұрын
@@andreyandrey2223 Милый Андрей, погуглите :)
@ДмитрийПахомов-р8у3 жыл бұрын
Lost!!
@ВолодимирСередюк-м7т7 жыл бұрын
А если с рандомом использовать такую конструкцию: int[] mas = new int[1000]; mas[0] = new Random().Next(); for (int j = 1; j < 1000; j++) { mas[j] = new Random().Next(); while(mas[j].Equals(mas[j - 1])) { mas[j] = new Random().Next(); } } ето будет не правильно?) п.с. для генерации 1000 рандомных чисел
@ExtremeCode7 жыл бұрын
var random = new Random(); for(int i = 0; i < 1000; i++){ cw(random.Next()); }
@ВолодимирСередюк-м7т7 жыл бұрын
а что за метод "cw"?
@mikeefpv7 жыл бұрын
volstep seredyuk Console.WriteLine();
@ВолодимирСередюк-м7т7 жыл бұрын
Спасибо за ответ)
@flachy77 жыл бұрын
это код с текущего проджекта ленивца, не обращай внимание
@nick-test3 жыл бұрын
И это всё??? А где ответ на главную загадку? 3:33 Что за 31 и почему 31? Как спать теперь то..
@fvrcbv15584 жыл бұрын
Если вопрос актуален. Сделайте переменную рандома статическим
@h_it3 жыл бұрын
3 года прошло... Это прям сильно, мучится от рандома три года
@anreechase8020 Жыл бұрын
Может тогда лучше брать не время от запуска системы, а значение дата-время с максимальной точностью, тогда это точно не будет повторяться.
@АлександрБычко-п9ъ5 жыл бұрын
Ха а через компилятор на сайте майкрософта такой проблемы нет ) Все из-за модификатора [ThreadStatic] поля private static Random t_threadRandom; private static readonly Random s_globalRandom = new Random(GenerateGlobalSeed()); не обновляются, поэтому генерируются одинаковые последовательности Равноценно new Random(int a).Next(); Где вместо а можно подставлять любое целое число и будет генерироваться из него последовательность одинаковых чисел. Как - то так.
@ExtremeCode5 жыл бұрын
Этот косяк пофиксили давным-давно, с какой-то ревизией .NET Core , так что не актуально уже :)
@Tropen915 жыл бұрын
Это тебе не баши баратрума счетать.
@daimirmus Жыл бұрын
Еще случайно обнаружил что Random если указать промежуток выдачи чисел от -х до х выдает 70% отрицательных чисел. Протестил это на ооочень большем объеме чисел. Может кто знает в чем тут дело?
@klasterdev1547 жыл бұрын
Можно юзать Thread.Sleep(10) перед каждой генерацией, я таким костылем во всех лабах подпирал)
@АркадийСтон7 жыл бұрын
ну это совсем пиздец)
@magictime89593 жыл бұрын
@@АркадийСтон согласен
@Ais_Hunt2 жыл бұрын
Там должно быть не 21, не 31, а 42!
@andrusia20483 жыл бұрын
в лото настоящий рандом
@rbogdan89807 жыл бұрын
Просто оставлю это здесь: var rnd = new Random(); for (int i = 0; i < 10; i++) Console.WriteLine(rnd.Next());
@ExtremeCode7 жыл бұрын
Спасибо!
@dsstepanov7 жыл бұрын
потому что singleton
@FalyonkiGuy5 жыл бұрын
Недавно такое произошло со мной. Я подумал, что сломал компьютер... 😮
@TheKOTLUIS5 жыл бұрын
Очень познавательно и полезно - правда них... не понял =) Теперь для маленьких и тупых - запили свой рандомайзер процедуру( функцию) или как ты там хочешь назвать её =) покажи и разбери как он работает.
@AzDzelo4 жыл бұрын
Правильное использование System.Random : System.Random r = new System.Random(); for (int i = 0; i < 10; i++) { print(r.Next()); } и будет Вам счастье.
@IvanAndreev913 жыл бұрын
А если рандом используется внутри класса и не может быть вынесен вовне? Что тогда делать случайно инициализируемым полям?
@alexgabov907 жыл бұрын
нраааица
@StepanVorobiov3 жыл бұрын
а на JS который все так хэйтят проблемы то нет!)
@orfos3 жыл бұрын
42
@СтарыйФриц-с2т Жыл бұрын
Только что запустил єтот код и вышли разные числа
@ТимурГарифулин-ш5з2 жыл бұрын
Если шо - на 15 мая 2022 такой проблемы не наблюдается)
@ТимурГарифулин-ш5з2 жыл бұрын
П.С. это в .Net 6 проблем нет. в .Net Framework действительно вот такая хрень имеется...
@Daniyar867 жыл бұрын
Вот же вам заняться нечем XD
@gnosov4 жыл бұрын
хоть бы посмотрел еще в другую сторону - /dev/random
@sergey_fetisov3 жыл бұрын
А представляешь, в драйвере new Random() увидеть...
@samesadface7 жыл бұрын
Потому что нужно писать так: var rnd = new Random(); for (int i = 0; i < 10; i++) WriteLine(rnd.Next()); ReadKey();
@Артем-д1г7 жыл бұрын
Рандома в компьютерах не бывает xD
@mk72v2oq7 жыл бұрын
Бывает, в линукс /dev/random например. Ну и для совсем абсолютно непредсказуемого рандома есть специальные коробочки, которые подключаются по юсб и генерируют числа на основе квантовых шумов.
@Pchelozavr5 жыл бұрын
@Гоша Ватюнга квантовофизический рандом будет рандомом, но ровно до того момента как не найдут эксплойт
@oleksii51385 жыл бұрын
Что бы знали. Не существует реальных способов получить рандомное число, все они базируются на чем-то. От времени, до количества напряжения в вашом пукане. Тогда придумали псевдогенераторы алгоритмические. Они тоже псевдо, но уже без зависимости на что-то (время\воздух\сила тока), но они так-же не детерминированные. Все они имеют такие числа как ты написал (это прирост, дефолтное значение, максимальное, и мультиплаер).
@Chakaramba5 жыл бұрын
Ну да, это очевидно и понятно, разве не так? Вопрос то в задаче был о другом.
@ПавелКожанов-т8п3 жыл бұрын
У меня нормально создает числа
@salten137 жыл бұрын
Всё дело в семячке ;) чекните реализацию rand & srand - СИшные функции
@sergey_fetisov3 жыл бұрын
Здесь собрались программисты бизнес-решений. А вы им про задающие числа псевдослучайных последовательностей....
@pinkmane13375 жыл бұрын
Random rand1 = new Random((int)(DateTime.Now.Ticks)); for (int i = 0; i < 10; i++) { Console.WriteLine(rand1.Next(20)); }
@miker58796 жыл бұрын
мб singleton?
@АртёмЗ-ъ3у7 жыл бұрын
чуваки, это конечно интересно. но я считаю, что такие видосы надо выкладывать, когда у вас уже всё обо всём рассказано и показано. хотя хз. может быть я не прав
@Tinyismyson7 жыл бұрын
CLR быстро сожрал код. Добавляйте в for что-то типа Thread.Sleep(150)и получайте свой рандом