Advertisement
Guest User

Diman. Examen na 5! :)

a guest
Jan 20th, 2017
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.88 KB | None | 0 0
  1. from random import random
  2.  
  3. def LCG(n):
  4.     '''
  5.   вход: n - кол-во элтов в последовательности
  6.   выход: случайная последовательность, основанная на линейном
  7.   конгруэнтном генераторе, из n элтов
  8.   '''
  9.     mod = 6075
  10.     a = 106
  11.     c = 1283
  12.     x = 0
  13.  
  14.     seq = [(a*x + c) % mod]
  15.     for i in range(n):
  16.         # здесь происходит следующее:
  17.         # следующий элемент последовательности
  18.         # высчитаывается через предыдущий по формуле
  19.         # Xi+1 = (a*Xi + c) mod m
  20.         seq.append((a*seq[-1] + c) % mod)
  21.  
  22.     return seq
  23.        
  24. '''
  25. n - размер случайной последовательности
  26. m - размер случайной подпоследовательности
  27. input().split() - разбивает введенную строку по пробелам
  28. и возвращает из элементов строки т.е.
  29. "5 7".split() -> ["5", "7"]
  30. map(func, list) - применяет функцию func на каждый э-лт списка list
  31. map(int, input().split()) - из списка ["5", "7"] -> [5, 7]
  32. '''
  33. n, m = map(int, input('Enter n m: ').split())
  34.  
  35. seq = LCG(n) # генерируем случайную последовательность
  36.  
  37. print("Случайная последовательность:", *seq)
  38.  
  39. j = n
  40. k = 0
  41. while j > 0:
  42.     u = random()
  43.     k = int(j*u) + 1
  44.     seq[k], seq[j] = seq[j], seq[k]
  45.     j -= 1
  46.  
  47. # результурующая подпоследовательность
  48. # берется как срез из списка т.е.
  49. # с нулевого по m-й элемент
  50. subseq = seq[0:m]
  51.  
  52. print("Случайная подпоследовательность:", *subseq)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement