Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #define a 211
- #define c 0
- #define m 253 // 2^8 - 3
- #define SIZE 10
- int ArrayRand[SIZE] = {1, 57, 78, 89, 100, 123, 167, 188, 231, 242};
- // z*mod(2^b - q)
- int simulatedDivision(int z, int b, int q)
- {
- int zi = z;
- int modul = (1 << b) - q; // m = 2^b - q
- int k = zi >> b; // a*z / m
- zi = zi & (~(~0 << b)); // (a*z) (mod m)
- zi += k*q; // zi + k*q
- while (zi >= modul)
- zi -= modul;
- return zi;
- }
- int linearCongruentialGenerator(int zi_1)
- {
- int zi = a*zi_1;
- return simulatedDivision(zi, 8, 3);
- }
- #define A 4
- #define B 14
- float TanabradGanawilebuli(float num)
- {
- return (num * (B-A) + A);
- }
- int main()
- {
- system("COLOR F0");
- int i = 0;
- while (i < SIZE)
- {
- printf("ArrayRand[%d] = \t\t%d\t", i, ArrayRand[i]);
- ArrayRand[i] = linearCongruentialGenerator(ArrayRand[i]);
- printf("ArrayRand[%d] = \t%f\n", i, ( ArrayRand[i]/(float)m ));
- i++;
- }
- printf("\n\n");
- i = 0;
- while (i < SIZE)
- {
- printf("Tanabrad ganawilebuli[%d] = \t%f\n", i, TanabradGanawilebuli( ArrayRand[i]/(float)m ));
- i++;
- }
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment