Skip to content

Instantly share code, notes, and snippets.

@MerlinTwi
MerlinTwi / gist:94486670748d30869326518ae32e6e93
Created November 25, 2017 12:40
Формула "честного" рандома
current_chance = (max — goods) / (length — tries)
max=сколько нужно выдать игроку предметов
length=на количество попыток (max=1, length=10: на 10 попыток один предмет, т.е. шанс 10%)
goods=сколько уже выпало предметов
tries=номер попытки (как только tries становится равным length, всё начинается заново)
using UnityEngine;
namespace Common {
/// <summary>
/// Перебор координат по спирали против часовой стрелки:
/// (0:0),
/// (1:0), (1:1), (0:1), (-1:1), (-1:0), (-1:-1), (0:-1), (1:-1),
/// (2:-1), (2:0), (2:1), (2:2), (1:2), (0:2), (-1:2), (-2:2), (-2:1), (-2:0), (-2:-1), (-2:-2), (-1:-2), (0:-2), (1:-2), (2:-2),
/// (3:-2), ...
// 20 разных цветов для всяких графиков
// https://fly2sky.ru/ChartColors.png
#0000FF
#FF0000
#820080
#FFFF00
#00FF00
#0080FF
#5F5F5F
#F9A753
@MerlinTwi
MerlinTwi / FizzleFade.cs
Last active September 5, 2017 22:46
Псевдорандомный перебор всех чисел от 1..x
// Псевдорандомно перебирает все числа (кроме 0) без повторов
// https://ru.wikipedia.org/wiki/Регистр_сдвига_с_линейной_обратной_связью
uint feed = 0x12; // для результата в 5 бит
uint i = 1;
do {
if ((i & 1) != 0)
i = (i >> 1) ^ feed;
else
i = (i >> 1);