গ্রাফিকাল র্যান্ডম জেনারেটর


10

একটি দুর্দান্ত জিইউআই সহ লিনাক্সের জন্য কি এলোমেলো জেনারেটর রয়েছে, যা দুটি পূর্ণসংখ্যার মধ্যে একটি এলোমেলো পূর্ণসংখ্যা তৈরি করতে পারে এবং এটি একটি বড় ফন্টসাইজের সাহায্যে প্রদর্শন করতে পারে?


তুমি কি করতে যাচ্ছ? মানসিক গণিত?
বিগস্যাক

উত্তর:


36

আমি কোন সফ্টওয়্যার জানি না। গুগলও কিছু নিয়ে আসে নি। অনুমান করুন এটি খুব সাধারণ একটি সমস্যা। যদি আপনি এটি কোনও স্ক্রিপ্টিং ভাষায় লিখে থাকেন তবে কোডের প্রায় 30 টি লাইন হওয়া উচিত। এটি করার জন্য আপনি একটি লিব্রেফিস স্প্রেডশিটও তৈরি করতে পারেন। ভয়াবহভাবে কঠিন হওয়া উচিত নয়।

সম্পাদনা 1:

সিউডো-এলোমেলো নম্বর জেনারেটর - পার্ল গুই স্ক্রিপ্ট

নীচে আমি কোডড একটি দ্রুত এবং নোংরা পার্ল স্ক্রিপ্ট রয়েছে। আপনার নিজের এটি পরিবর্তন করতে সক্ষম হওয়া উচিত। আপনি যখন এটি দিয়ে চালনা করেন 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( "<span size=\"$size\">$rand</span>" );
}
#### 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("<span size=\"$size\">0</span>");
$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

অবসেসিভফসস আমাকে এলোমেলো সংখ্যার জন্য আরেকটি জেনারেটর অন্তর্ভুক্ত করতে বলেছে (যেমন এটি স্ক্রিপ্ট পার্লের বিল্ট-ইন ব্যবহার করে) আমার অন্যান্য উত্তরে এটি কীভাবে করা যায় তার একটি স্কেচ আপনি দেখতে পারেন ।


9
+1 - আপনি যে স্ক্রিপ্ট লিখতে যথেষ্ট যত্ন নিয়েছেন তা আশ্চর্যজনক।
জেআরজি

4
আপনি এটির জন্য একটি স্ক্রিপ্ট সরবরাহ করতে সময় ব্যয় করেছেন তা দেখে ভাল লাগল। গ্রেট!
সমরাস

আমি খুশি তুমি এটা পছন্দ করেছো.
কন-এফ-ব্যবহার

@ কন-এফ-ব্যবহার আপনি জিপিএল লাইসেন্সে প্রকাশ করতে পারলে ভাল লাগবে।
লিঞ্জিটি

@ আলাকিক এমআইটি লাইসেন্স আপনার সাথেও ঠিক আছে। এটি আরও অনুমোদনযোগ্য এবং জিপিএল সামঞ্জস্যপূর্ণ?
কন-এফ-ব্যবহার

4

অবসেসিভফসস ব্লামকে বাস্তবায়ন করতে বলেছিল , ইত্যাদি। ক্রিপ্টোগ্রাফিকভাবে নিরাপদ সিউডো-এলোমেলো নম্বর জেনারেটর। এটি কীভাবে করা যায় সে সম্পর্কে আমার স্কেচ এখানে। অন্যান্য কোডটি আমার আগের উত্তর হিসাবে একই থাকে । একজনকে কেবল সাব্রোটাইন প্রতিস্থাপন করতে হবে 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( "<span size=\"$size\">$randout</span>" );
}

উল্লিখিত হিসাবে এটি অসম্পূর্ণ। একজনকে বিটওয়াইস অপারেটরগুলি দরকারী এলোমেলো নম্বরগুলি বের করতে, শিফট করে এবং তাদের মধ্যে $minএবং ফিট করার জন্য স্কেল করতে হয় $max। এখনই সর্বনিম্ন এবং সর্বাধিকের জন্য ইনপুটটি অব্যবহৃত।


আমার সন্দেহ হয় সিএসপিআরএনজির জন্য পার্ল মডিউল রয়েছে যা আমার স্ক্রিপ্টের চেয়ে আরও ভাল কাজ করে।
কন-এফ-ব্যবহার

1

এটি কিউএমএল দিয়ে খুব সহজেই করা যেতে পারে:

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:

এখানে চিত্র বর্ণনা লিখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.