is_реклам:

пошук, категорії та ін. показати ▼

java print hello world by randomString

java print hello world by randomString
автор опубліковано

Що на вашу думку видасть результат роботи наступного коду :

System.out.println(randomString(-229985452) +
    + " " + randomString(-147909649));

Правильно, на екрані монітора ви побачите досить знайому фразу hello world. Розглянемо більш детально чому саме так кожного разу як ми хочемо згенерувати нібито випадкову стрічку.
Для початку візьмемо до уваги те, що засобами машини(пк) не можливо згенерувати випадкову послідовність, а можливо отримати псевдовипадкову. В цьому криється і вся біда такого роду генерацій. Розглянемо код що дає нам в результаті шукану стрічку:

public static String randomString(int i)
{
    Random ran = new Random(i);
    StringBuilder sb = new StringBuilder();
    for (int n = 0; ; n++)
    {
        int k = ran.nextInt(27);
        if (k == 0)
            break;

        sb.append((char)('`' + k));
    }

    return sb.toString();
}

Як бачимо генерація наступного числа відбувається за ключем 27, також на вхід функції randomString ми подаємо число. Іншими словами ми вказали позицію, з якої почати, і крок, за яким іти по послідовності, тому не дивно що кожного разу дана функція видає нам одну і ту ж послідовність, і як результат одну і ту ж згенеровану стрічку(адже ми до послідовності додаємо зміщення на величину символу '`', щоб перейди в буквенні символи).
У нашому прикладі ми отримаємо, що код

new Random(-229985452).nextInt(27)

генерує послідовність

8
5
12
12
15
0

а код

new Random(-147909649).nextInt(27)

генерує

23
15
18
12
4
0

Додавши до даної послідовності код символу '`', який рівний числу 96 отримаємо:

8  + 96 = 104 -> h
5  + 96 = 101 -> e
12 + 96 = 108 -> l
12 + 96 = 108 -> l
15 + 96 = 111 -> o

23 + 96 = 119 -> w
15 + 96 = 111 -> o
18 + 96 = 114 -> r
12 + 96 = 108 -> l
4  + 96 = 100 -> d

Досить цікаві особливості генерації випадкових стрічок, як на Вашу думку? Пам'ятайте в коментарях Ви завжди можете залишити своє враження від прочитаного..

схоже за тегами

Залишити коментар:

Яндекс цитирования UA TOP Bloggers