private static float RandomBasedOnIndex(int i)
float[] randomSequenceA = new float[] { 0.01282f, 0.1675f, 0.21072f, 0.29134f, 0.3711f, 0.42318f, 0.5091f, 0.59871f, 0.7155f, 0.8411f, 0.9621f };
float[] randomSequenceB = new float[] { 0.01871f, 0.14413f, 0.29827f, 0.25421f, 0.30012f, 0.4871f, 0.51124f, 0.6612f, 0.7331f, 0.8871f, 0.90981f };
float[] randomSequenceC = new float[] { 0.00971f, 0.13412f, 0.2401f, 0.2109f, 0.3341f, 0.41134f, 0.57651f, 0.6854f, 0.7561f, 0.80981f, 0.97651f };
int a = Convert.ToInt16(s.Substring(0, 1));
int b = i > 10 ? Convert.ToInt16(s.Substring(1, 1)) : a;
int c = i > 100 ? Convert.ToInt16(s.Substring(2, 1)) : b;
return (randomSequenceA[a] + randomSequenceB[b] + randomSequenceC[c]) / 3;
public static void Main()
for (int i = 0; i <20; i ++) {
Console.WriteLine(i.ToString() + " = " +RandomBasedOnIndex(i).ToString());