图形随机发生器

是否有一个用于linux的随机生成器具有良好的GUI,它可以在两个整数之间生成一个随机整数并用大字体大小显示它?

我不知道任何软件。 谷歌也没有拿出一些东西。 猜猜这个问题太简单了。 如果用脚本语言编写它,应该是大约30行代码。 您还可以创建一个LibreOffice电子表格来执行此操作。 不应该非常困难。

编辑1:

伪随机数发生器 -  perl gui脚本

下面是我编写的快速而脏的perl脚本。 你应该能够自己修改它。 当您使用perl nameOfTheScript.pl运行它或使用chmod u+x nameOfTheScript.pl使其可执行,然后双击它,它将如上图所示。

 #!/usr/bin/perl # © 2011 con-f-use@gmx.net. Use permitted under MIT license: http://www.opensource.org/licenses/mit-license.php use Gtk2 '-init'; # relies on the gnome toolkit bindings for perl $size = 1e5; # fontsize in 0.001 pt (only god knows why) sub randomizeLabel { #### this does the actual randomisation $min = int($entry1->get_text); $max = int($entry2->get_text); $rand = int(rand($max-$min+1)) + $min; $diplabel->set_markup( "$rand" ); } #### the rest is gui stuff: $window = Gtk2::Window->new('toplevel'); $window->set_title('Random Integer Generator'); $window->signal_connect(destroy => sub { Gtk2->main_quit; }); $window->signal_connect(delete_event => sub { Gtk2->main_quit; }); $window->set_border_width(10); $vbox = Gtk2::VBox->new(0, 5); $window->add($vbox); $vbox->show; $diplabel = Gtk2::Label->new; $diplabel->set_markup("0"); $vbox->add($diplabel); $diplabel->show; $entry1 = Gtk2::Entry->new; $vbox->add($entry1); $entry1->show; $entry2 = Gtk2::Entry->new; $vbox->add($entry2); $entry2->show; $button = Gtk2::Button->new("Generate!"); $button->signal_connect(clicked => \&randomizeLabel, $window); $vbox->add($button); $button->show; $window->show; Gtk2->main; exit 0; 

EDIT2

ObsessiveFOSS要求我为随机数包含另一个生成器(因为这个脚本使用Perl的内置数据)。 你可以在我的另一个答案中看到如何做到这一点的草图。

ObsessiveFOSS要求实施Blum等人。 加密安全的伪随机数发生器。 这是我的草图,如何做到这一点。 其他代码与我之前的答案保持一致。 只需要替换randomizeLabel子例程并插入此代码

 use bigint; # Kinda large primes $p = 338047573; # Any pair of large primes will suffice here... $q = 4182249941; #+...as long as they fullfill the congruence check below $rand = 7; # Seed for the random number generator (x_0 in the wiki) sub errMsg { $dialog = Gtk2::MessageDialog->new($window, 'destroy-with-parent', 'error', 'ok', $_[0]); $dialog->signal_connect (response => sub { exit 1; }); $dialog->run; } # Check congruence 3 mod 4 (for quadratic residue) if( ($p-3)%4 == 0 ) { errMsg('Error: Variable p is ill choosen.'); } if( ($q-3)%4 == 0 ) { errMsg('Error: Variable q is ill choosen.'); } # Note: For large cycle lengths gcd(φ(p-1), φ(q-1)) should also be small,... #+...where φ is Euler's totient function but this is not checked here # Compute Modulus in Blum Blum Shub $M = $p*$q; sub randomizeLabel { # This does the actual randomization $min = int($entry1->get_text); $max = int($entry2->get_text); # Boundaries for the desired random range from the input filed of the GUI (included for convenience when modifying the script - not used here) # Blum Blum Shub pseudo random number generator $rand = ($rand*$rand) % $M; # Here you have to extract the bits and shift them in range $randout = $rand & (2**6-1); # Change this line. It's an example and extracts the five least significant bits! To extract the ten LSBs use '(2**11-1)' and so on... # $randout = ...$min...$max...; # shift it in the right range (not done here) $diplabel->set_markup( "$randout" ); } 

如上所述,它是不完整的。 必须使用按位运算符来提取有用的随机数,移位和缩放它们以适应$min$max 。 现在,最小值和最大值的输入未使用。

今天可以使用QML轻松完成:

 import QtQuick 2.0 import Ubuntu.Components 0.1 Rectangle { id: mainView width: units.gu(30) height: units.gu(40) Column { id: generator spacing: units.gu(1) anchors.horizontalCenter: mainView.horizontalCenter Text { id: ramdom_number text: "0" font.pointSize: 100 anchors.horizontalCenter: generator.horizontalCenter } TextField { id:min text: "0" } TextField { id: max text: "100" } Button { text: "Generate!" width: generator.width onClicked: ramdom_number.text = Math.floor((Math.random()*(max.text-min.text+1))+min.text); } } } 

使用qmlscene运行此代码:

在此处输入图像描述