1 Востаннє редагувалося flatliner (30.04.2024 22:56:50)

Тема: Рядок з 12 випадкових цифр

Треба було subj і не хотілося ліпити щось велике, думав, як це можна в один рядок і придумав:

Array(12).fill(0).map((el) => Math.floor(Math.random() * 10)).join('');

Вирішив запостити на форум, щоб місцеві знавці переплюнули по скороченню цього коду. Цікаво, можна ще лаконічніше?

Подякували: leofun011

2

Re: Рядок з 12 випадкових цифр

О, здається я сам придумав, ще лаконічніше... далі вже мабуть нікуди:

[...Array(12)].map((el) => Math.floor(Math.random() * 10)).join('');

3

Re: Рядок з 12 випадкових цифр

(''+Math.random()).substr(3, 10);

Чому 3, а не 2 : бо є такі середовища, в яких формат числа буде починатися з "+0.".

Подякували: flatliner1

4

Re: Рядок з 12 випадкових цифр

leofun01 написав:
(''+Math.random()).substr(3, 10);

Чому 3, а не 2 : бо є такі середовища, в яких формат числа буде починатися з "+0.".

Круто, тільки за умовами вихідної задачі .substr(3, 12). Але цікаво, не може бути такого числа, що в нього буде менше цифр після коми? Навіть, якщо воно буде на рядок перетворюватися з достатньою кількістю цифр, але ж то будуть нулі? Не можливий такий варіант? Це треба добре розуміти, як працює отой Math.random() і чи немає "пустот" між значеннями, тобто це гарантує, що певні рядки ніколи не можуть бути згенеровані...

Подякували: leofun011

5

Re: Рядок з 12 випадкових цифр

А в моїй версії, ще, як мінімум, можна викинути "el", який не використовується...

Подякували: leofun011

6

Re: Рядок з 12 випадкових цифр

flatliner написав:

.substr(3, 12). Але цікаво, не може бути такого числа, що в нього буде менше цифр після коми? Навіть, якщо воно буде на рядок перетворюватися з достатньою кількістю цифр, але ж то будуть нулі? Не можливий такий варіант?

Ой, точно, це мене шось поплавило. Правильне зауваженя. А ще є ймовірність отримати дуже мале число (1e-6), тоді все поламається. Зараз пофіксимо:

Math.random().toFixed(13).substr(3,12)

toFixed() дає нулів скільки треба.

Подякували: flatliner, FakiNyan2