Skip to content

Conversation

@Dester
Copy link

@Dester Dester commented May 27, 2025

Было необходимо сгенерировать 2 случайные последовательности с помощью генераторов псевдослучайных чисел и проверить их с помощью тестов NIST. В папке random содержится код для 1-го задания, в папке NIST_tests - для 2-го.
В модуле files_work.py находятся функции для работы с json и txt файлами. Модуль main.py является точкой входа в программу и содержит в себе все необходимые вызовы функций, необходимые для выполнения задания
P-value:

  1. C++:
    Частотный побитовый тест: 0.5958830905651779
    Тест на одинаковые подряд идущие биты: 0.03563414199903021
    Тест на самую длинную последовательность единиц в блоке: 0.9999999999999941
  2. Java:
    Частотный побитовый тест: 0.11161176829829222
    Тест на одинаковые подряд идущие биты: 0.007878283878835393
    Тест на самую длинную последовательность единиц в блоке: 0.9999999999999941
    Последовательности плохо прошли тест на одинаковые подряд идущие символы, поэтому последовательность на java не является случайной, а последовательность на c++ является

@github-actions github-actions bot added In progress Код в процессе проверки Lab 2 Лабораторная 2 "Статистический анализ псевдослучайных последовательностей" labels May 27, 2025
:param sequence: бинарная последовательность
:return: P-значение последовательности
"""
p = [0.2148, 0.3672, 0.2305, 0.1875]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

вынести в файл с настройками

p = [0.2148, 0.3672, 0.2305, 0.1875]
v = [0, 0, 0, 0]
n = len(sequence)
for i in range(0, n, 8):

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

длину блока вынести в файл с настройками

Comment on lines 61 to 68
if max_length <= 1:
v[0] += 1
elif max_length == 2:
v[1] += 1
elif max_length == 3:
v[2] += 1
else:
v[3] += 1

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

использовать match/case

Comment on lines 2 to 7

public class Random128Bit {
public static void main(String[] args) {
Random random = new Random();
byte[] bytes = new byte[16]; // 16 bytes = 128 bits
random.nextBytes(bytes);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment on lines 2 to 8
#include <iostream>
#include <bitset>

int main() {
std::random_device rd;
std::mt19937_64 gen(rd());
uint64_t high = gen();

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В C++ тоже есть стандарт описания функций

@Daria-creator-lab Daria-creator-lab added Approved Код зачтен. Можно сдавать теорию. and removed In progress Код в процессе проверки labels Jun 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Approved Код зачтен. Можно сдавать теорию. Lab 2 Лабораторная 2 "Статистический анализ псевдослучайных последовательностей"

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants