Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- // Diskretulad ganawilebuli
- /* magalitad:
- (0 : 0.22] => 21
- (0.22 : 0.39] => 10
- (0.39 : 1) => 18
- */
- int diskretuli(float r)
- {
- if (r > 0 && r <= 0.22) return 21;
- if (r > 0.22 && r <= 0.39) return 10;
- if (r > 0.39 && r < 1) return 18;
- return 0; // tu araa [0:1] shualedshi ricxvi (anu shecdomaa)
- }
- // Uwyveti
- // lambda mocemulia:
- float lambda;
- float uwyveti(float r)
- {
- return (-1)/lambda * log(r);
- }
- // Tanabrad ganawilebuli
- // shualedi mocemulia [a : b]
- float a, b;
- float tanabradGanawilebuli(float r)
- {
- return r * (b-a) + a;
- }
- // mocemulia a, c, m
- int a, c, m;
- float wanacvlebuli_wkg(int zi_1)
- {
- __int64 zi = zi_1;
- zi = (a*zi + c) & m;
- return zi / (float)m;
- }
- float multiplikaciuri_wkg(int zi_1)
- {
- __int64 zi = zi_1, k;
- k = (a * zi) >> 31; // modulia 2^31
- zi = (a * zi) & m; // m = 2^31 -1
- zi += k;
- if (zi >= m)
- zi -= m;
- return zi / (float)m;
- }
- // tu mocemulia b, q => m = 2^b - q
- float generator(int zi_1, int b, int q)
- {
- __int64 zi, k;
- zi = zi_1;
- m = q << b - q; // 2^b = (1 << b)
- k = (a * zi) >> m;
- zi = (a * zi) & m;
- zi += k;
- if (zi >= m)
- zi -= m;
- return zi / (float)m;
- }
- int main()
- {
- system("COLOR F0");
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment