Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from random import random
- def LCG(n):
- '''
- вход: n - кол-во элтов в последовательности
- выход: случайная последовательность, основанная на линейном
- конгруэнтном генераторе, из n элтов
- '''
- mod = 6075
- a = 106
- c = 1283
- x = 0
- seq = [(a*x + c) % mod]
- for i in range(n):
- # здесь происходит следующее:
- # следующий элемент последовательности
- # высчитаывается через предыдущий по формуле
- # Xi+1 = (a*Xi + c) mod m
- seq.append((a*seq[-1] + c) % mod)
- return seq
- '''
- n - размер случайной последовательности
- m - размер случайной подпоследовательности
- input().split() - разбивает введенную строку по пробелам
- и возвращает из элементов строки т.е.
- "5 7".split() -> ["5", "7"]
- map(func, list) - применяет функцию func на каждый э-лт списка list
- map(int, input().split()) - из списка ["5", "7"] -> [5, 7]
- '''
- n, m = map(int, input('Enter n m: ').split())
- seq = LCG(n) # генерируем случайную последовательность
- print("Случайная последовательность:", *seq)
- j = n
- k = 0
- while j > 0:
- u = random()
- k = int(j*u) + 1
- seq[k], seq[j] = seq[j], seq[k]
- j -= 1
- # результурующая подпоследовательность
- # берется как срез из списка т.е.
- # с нулевого по m-й элемент
- subseq = seq[0:m]
- print("Случайная подпоследовательность:", *subseq)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement