যেকোন র্যান্ডম পূর্ণসংখ্যা তৈরি করুন


17

আপনার প্রোগ্রাম / ফাংশন করা উচিত

  • আউটপুট ঠিক এক পূর্ণসংখ্যা
  • আউটপুট যে কোনওইতিবাচক সম্ভাবনা সহ পূর্ণসংখ্যা
  • কমপক্ষে 50% সম্ভাব্যতার সাথে একটি পূর্ণসংখ্যা 1.000.000 বা -1.000.000 এর চেয়ে কম আউটপুট দেয়।

উদাহরণস্বরূপ ফলাফল (সমস্ত কিছু অবশ্যই সম্ভব):

59875669123
12
-42
-4640055890
0
2014
12
24
-7190464664658648640055894646646586486400558904644646646586486400558904646649001

ব্যাখ্যা:

  • একটি পিছনের লাইনের বিরতি অনুমোদিত is
  • শীর্ষস্থানীয় শূন্যগুলি অনুমোদিত নয়।
  • -0 অনুমোদিত.

সংক্ষিপ্ততম কোড জিতেছে।


2
@ অপ্টিমাইজার আপনি অভিন্ন সম্ভাবনা কেন ধরে নিচ্ছেন ? প্রশ্ন এটি বর্ণনা করে না। প্রকৃতপক্ষে এটি এদিক থেকে পরিষ্কার মনে হয় যে যতক্ষণ না তার কমপক্ষে 50% [-1 মিলিয়ন, 1 মিলিয়ন] এর বাইরে পড়ে ততক্ষণ বিতরণটি অভিন্ন হতে হবে না
hobbs

10
এমন একটি সমাধান যা " সমস্ত পূর্ণসংখ্যার জুড়ে অভিন্ন বিতরণ " তৈরি করে অসম্ভব। অসীম অনেকগুলি পূর্ণসংখ্যা রয়েছে, সুতরাং প্রতিটি স্বতন্ত্র পূর্ণসংখ্যা 0 এর সম্ভাব্যতার সাথে উপস্থিত হয় Or ) 1 =।
জোয়েটউইডল

2
@Ypnypn কম্পিউটারের র‌্যাম কোনও সীমা নয়। আপনার কোথাও আপনার আংশিক আউটপুট সংরক্ষণ করতে হবে না।
জিমি 23013

4
@ জায়েন্ট্রি - way too long to fit in an integerএটি কেবলমাত্র সত্য যদি আপনি ধরে integerনেন যে এর অর্থ int32/64 বিট খিলানটিতে ডেটাটাইপ, যা অগত্যা বৈধ অনুমান নয়। "পূর্ণসংখ্যা" গণিত শব্দ হিসাবে শুরু হয়েছিল , যার কোনও আকার বাধা নেই।
ভুয়া নাম

5
আউটপুট সম্পর্কে সিদ্ধান্ত নেওয়ার জন্য সিউডো এলোমেলো সংখ্যা জেনারেটর ব্যবহার করে যে কোনও ব্যক্তি প্রায় সমস্ত পূর্ণসংখ্যাকে বাদ দেবে এবং উত্পাদিত হতে পারে এমন পূর্ণসংখ্যার আকারের উপরের সীমা স্থাপন করবে (অনুমান করে যে পিআরএনজির একটি সীমাবদ্ধ সময়কাল রয়েছে)) এটি উত্তরে অবহেলা করা যেতে পারে বা একটি বৈধ উত্তরের জন্য সত্যিকারের এলোমেলো সংখ্যা জেনারেটরের প্রয়োজন?
ট্রাইকোপলাক্স

উত্তর:


12

সিজেম, 16 14 13 বাইট

0{Kmr(+esmr}g

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

0{esmr(+esmr}g

এই এক না , PRNG সময়কালের দ্বারা সীমাবদ্ধ পরিসর থেকে সব এলোমেলো সংখ্যার বর্তমান টাইমস্ট্যাম্পের উপর নির্ভর করে। সুতরাং, এটি যেকোন সংখ্যক উত্পাদন করতে সক্ষম হওয়া উচিত, যদিও নেতিবাচক, বা এমনকি ছোট ধনাত্মক সংখ্যার জন্য সম্ভাব্যতা খুব কম।

নীচে একটি সমমানের সংস্করণ যা 3e5টাইমস্ট্যাম্পের পরিবর্তে ব্যবহার করে। এবং 20প্রথম ব্যাপ্তির জন্য (13-বাইট জমা হিসাবে)। এটি অনেক দ্রুত এবং সমস্ত নিয়ম মেনে চলে। যুক্তিসঙ্গত রানটাইম এবং ছোট কোড-আকার রাখার সময় 1,000,000 এরও বেশি সংখ্যার জন্য 50% সম্ভাব্যতা পাওয়া সীমাবদ্ধ ক্ষেত্রে এটি case ব্যাখ্যা এবং গাণিতিক ন্যায়সঙ্গততা এই সংস্করণটি উল্লেখ করে:

0{Kmr(+3e5mr}g

এটি চালাতে সাধারণত কয়েক সেকেন্ড সময় নেয়। আপনি 5একটি সঙ্গে প্রতিস্থাপন করতে পারেন2 এটা এমনকি দ্রুত রান করতে। তবে 50% সম্ভাব্যতার প্রয়োজনীয়তা কেবলমাত্র 1,000,000 এর পরিবর্তে 1000 এর জন্য পূরণ করা হবে।

আমি 0 এ শুরু করছি Then তারপরে আমি একটি লুপ পেয়েছি, যা আমি সম্ভাবনা 1 / (3 * 10 5 ) এর সাথে ভেঙে ফেলেছি । সেই লুপটির মধ্যে আমি আমার চলমান মোটের সাথে -1 এবং 18 (সমেত) এর মধ্যে একটি এলোমেলো পূর্ণসংখ্যা যুক্ত করি। সীমাবদ্ধ (ছোট হলেও) সম্ভাবনা রয়েছে যে প্রতিটি পূর্ণসংখ্যার আউটপুট হবে, ইতিবাচক পূর্ণসংখ্যার নেতিবাচকগুলির চেয়ে অনেক বেশি সম্ভাবনা রয়েছে (আমি মনে করি না যে আপনি আপনার জীবদ্দশায় একটি নেতিবাচক দেখতে পাবেন)। এত ছোট সম্ভাবনা নিয়ে বেরিয়ে আসা এবং বেশিরভাগ সময় বাড়ানো (এবং বিয়োগের চেয়ে আরও অনেক কিছু যোগ করা) নিশ্চিত করে যে আমরা সাধারণত ১,০০,০০০ ছাড়িয়ে যাব।

0              "Push a 0.";
 {          }g "Do while...";
  Kmr          "Get a random integer in 0..19.";
     (         "Decrement to give -1..18.";
      +        "Add.";
       3e5mr   "Get a random integer in 0..299,999. Aborts if this is 0.";

কিছু গাণিতিক ন্যায়সঙ্গততা:

  • প্রতিটি পদক্ষেপে আমরা গড়ে 8.5 যোগ করি।
  • ১,০০,০০০ এ পেতে আমাদের এই পদক্ষেপগুলির ১১7,,,7 প্রয়োজন।
  • সম্ভাব্যতা যা আমরা এই সংখ্যার পদক্ষেপের চেয়ে কম করব

    sum(n=0..117,646) (299,999/300,000)^n * 1/300,000
    

    যা মূল্যায়ন 0.324402। সুতরাং, প্রায় দুই তৃতীয়াংশ ক্ষেত্রে আমরা আরও ১১7,,64 steps পদক্ষেপ নেব এবং সহজেই প্রতি এক হাজারে পদক্ষেপ নেব।

  • (দ্রষ্টব্য যে এটি যথাযথ সম্ভাবনা নয়, কারণ average গড়ে .5.৫ সম্পর্কে কিছুটা ওঠানামা হবে তবে ৫০% পেতে আমাদের ১১ 11,6466 পেরিয়ে প্রায় ২১০,০০০ পদক্ষেপে যেতে হবে।)
  • যদি সন্দেহ হয় তবে আমরা সহজেই সমাপ্তির সম্ভাবনার ডিনোমিনেটরটিকে 9e9কোনও বাইট না যোগ করে (তবে রানটাইমের বছরগুলি) না করে সহজেই উড়িয়ে দিতে পারি ।

... বা 11 বাইট?

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

{esmr(}h]:+

আমি বিধিগুলিতে সত্যিকারের এলোমেলো সংখ্যা জেনারেটরের প্রয়োজন কিনা তা জানতে প্রশ্নটিতে একটি মন্তব্য যুক্ত করেছি, তবে আমি অনুমান করেছি যে আপনি পেডেন্ট্রিটির প্রশংসা করবেন। আপনার এলোমেলো উত্স এখানে ছদ্ম এলোমেলো হয়? এটি সম্ভব আপনার আউটপুটগুলির সেটটির আকারকে আপনার পিআরএনজি-র বেশিরভাগ সময়কালে সীমাবদ্ধ করবে?
ট্রিকোপলাক্স

(সাধারণ কমনীয়তার জন্য নির্বিশেষে +1)
26:30 '

হ্যাঁ আমি এতদূর অনুমান করছি। আমি যদি কেউ সেই সমস্যাটি ছাড়াই উত্তর পোস্ট করি কিনা তা জানতে আগ্রহী ...
ট্রিকোপল্যাক্স

আমি দেখতে পেয়েছি ওপি বলেছে যে আপনি ধরে নিতে পারেন যে আপনার এলোমেলো নম্বর জেনারেটর সত্যিকারের র্যান্ডম নম্বর জেনারেটর তা হোক বা না - তাই এটি এখন অপ্রয়োজনীয় ... :)
ট্রাইকপল্যাক্স

Kmrএকটি পিরিয়ডের যোগফল এখনও সর্বদা সময়কালের চেয়ে বড় ধনাত্মক সংখ্যা। এবং এটি সেই ক্ষেত্রে প্রতিটি সম্ভাব্য সংখ্যা তৈরি করতে পারে না।
jimmy23013

11

জাভা, 133 149

void f(){String s=x(2)<1?"-":"";for(s+=x(9)+1;x(50)>0;s+=x(10));System.out.print(x(9)<1?0:s);}int x(int i){return new java.util.Random().nextInt(i);}

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

-8288612864831065123773
0
660850844164689214
-92190983694570102879284616600593698307556468079819964903404819
3264

Ungolfed

void f() {
    String s = x(2)<1 ? "-" : "";       // start with optional negative sign
    s+=x(9)+1;                          // add a random non-zero digit
    for(; x(50)>0; )                    // with a 98% probability...
        s+=x(10)                        // append a random digit
    System.out.print(x(9)<1 ? 0 : s);   // 10% chance of printing 0 instead
}

int x(int i) {
    return new java.util.Random().nextInt(i);
}

পুরানো উত্তর (নিয়ম পরিবর্তনের আগে)

void f(){if(Math.random()<.5)System.out.print('-');do System.out.print(new java.util.Random().nextInt(10));while(Math.random()>.02);}

আপনার দু'জনই সঠিক তবে প্রশ্নটিতে বলা হয়েছে যে সম্ভাবনা কমপক্ষে 50% হতে হবে +/- 1.000.000 এর মধ্যে নয়
জায়ান্ট্রি ট্রি

@ অপ্টিমাইজার পুনরায় করা হয়েছে।
Ypnypn

আপনি যদি বাইনারি আক্ষরিক ব্যবহার করেন তবে আপনাকে মুদ্রণ করতে হবে না -
TheNumberOne

4

গণিত - 47

Round@RandomVariate@NormalDistribution[0,15*^5]

মূলত 1500000 এর সমান প্রকরণের সাথে সাধারণ বিতরণ ব্যবহার করে এলোমেলো সংখ্যা তৈরি করুন This এটি সম্ভাব্যতা 49.5015% সহ -10 ^ 6 এবং 10 ^ 6 এর মধ্যে একটি পূর্ণসংখ্যা উত্পাদন করবে।


"এটি সম্ভাব্যতা 50.4985% সহ -10 ^ 6 এবং 10 ^ 6 এর মধ্যে একটি পূর্ণসংখ্যা উত্পাদন করবে।" - এটি যথেষ্ট নয়। আপনি কি অনুমান ভুল লিখেছেন? সম্ভবত আপনি বৈকল্পিক হিসাবে 10 ^ 7 ব্যবহার করবেন?
জন ডিভোরাক

@ জানডভোরাক ভুল সম্ভাবনা, দুঃখিত। এখন এটি সঠিক।
ফিটফাট

ম্যাথামেটিকায় এটি বাস্তবায়ন কি সমস্ত পূর্ণসংখ্যাকে সত্যভাবে আচ্ছাদন করে? আমার
উত্সটিতে

@ githubphagocyte এটি বর্তমান নির্ভুলতার উপর নির্ভর করবে।
26:38

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

4

পাইথন 2, 75 69 বাইট

from random import*;s=0;j=randrange
while j(12):s=s*9+j(-8,9)
print s

মাঝখানে লুপটি সমস্ত পূর্ণসংখ্যা তৈরি করতে পারে তা পরীক্ষা করা তুচ্ছ (শূন্যের দিকে পক্ষপাতদুত্ত হলেও) "12" এই ধরনের সেখানে ± 10 মাত্রাধিক সংখ্যার প্রায় অর্ধেক আছে নির্বাচিত 6


পুরানো সমাধান:

পাইথন 2, 44 বাইট

গাণিতিক সমাধানের উপর ভিত্তি করে ।

from random import*;print int(gauss(0,8**7))

সত্যই কাজ করে না কারণ পাইথনের floatকেবল সীমাবদ্ধ নির্ভুলতা রয়েছে।


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

@ স্টারব্লিউ: ওপি থেকে: "আপনি ধরে নিতে পারেন যে আপনার ভাষার এলোমেলো নম্বর জেনারেটর সত্যিকারের এলোমেলো সংখ্যা জেনারেটর যদি তা না হয় তবেও।"
কেনেটিএম

3

রুবি, 70

f=->{m=10**6
r=rand -m..m
r<1?(r>-5e5??-:'')+r.to_s+f[][/\d+/]:r.to_s}

খুব বড় সংখ্যক উত্পাদন সম্ভব করে তুলতে, আমি Stringল্যাম্বডা থেকে নম্বরটি ফিরিয়ে দিচ্ছি । যদি এটি অনুমোদিত না হয় তবে puts f[]একটি ক্রিয়াকলাপের পরিবর্তে এটি 8 টি অক্ষরকে একটি প্রোগ্রাম হিসাবে তৈরি করুন।

ব্যাখ্যা

-1,000,000এবং এর মধ্যে একটি সংখ্যা তৈরি করুন 1,000,000। যদি সংখ্যাটি 1বা তার বেশি হয় তবে সংখ্যাটি হিসাবে ফিরে আসে String

যদি সংখ্যাটি এর চেয়ে কম 1হয় তবে সংখ্যা সীমার বাইরে নম্বর ফিরিয়ে আনার জন্য ফাংশনটিকে পুনরাবৃত্তভাবে বলা হয়। নেতিবাচক সংখ্যাগুলিও উত্পন্ন হতে পারে তা নিশ্চিত করার জন্য, প্রাথমিক সংখ্যাটি যদি এর চেয়ে বেশি হয় তবে -ফলাফলটিকে একটি উপসর্গযুক্ত করা হয় ।String-500,000

আমি আশা করি আমি চ্যালেঞ্জটি সঠিকভাবে বুঝতে পেরেছি!


3

আর, 38

library(Rmpfr)
round(rnorm(1,2e6,1e6))

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


হ্যাঁ আমি বুঝতে পারি আমি অনুমানটি ভুলভাবে লিখেছি। এবং আমি কল্পনা করি ম্যাথমেটিকার সাথে মেশিনের যথার্থতার সাথে এটির একই সীমাবদ্ধতা রয়েছে
শেডলটকার

Hmm in that case I'm not sure. I'll have to look into it; consider this answer "on hold" for now
shadowtalker

@MartinBüttner fixed I think
shadowtalker

Interesting. I don't think you need the whole sample(c(1,-1),1) think though. Just centering at 1e6 should be enough..
Martin Ender

@MartinBüttner oh it doesn't need to be 50% at both ends? That wasn't clear
shadowtalker

2

Perl, 53 characters

print"-"if rand>.5;do{print int rand 10}while rand>.1

একটি মুদ্রণ করার সময় আমি অবশ্যই পূর্ণসংখ্যার সাথে কাজ করার কোনও কারণ দেখতে পাচ্ছি না :)

নেতৃস্থানীয় "-" বা ছাড়াই একটি সংখ্যা মুদ্রণের সমান সম্ভাবনা রয়েছে।

সময়ের 1-অঙ্কের সংখ্যা 10%, সময়ের 2-অঙ্কের সংখ্যা 9%, সময়ের একটি 3-সংখ্যার সময় 8.1%, সময়ের একটি 4-অঙ্কের সংখ্যা 7.29%, একটি 5-সংখ্যার মুদ্রণ সময়ের .5..56%, একটি--সংখ্যার সময়ের 5.9% সময় ইত্যাদি, সম্ভাব্যতা হ্রাস সহ যে কোনও দৈর্ঘ্য সম্ভব। এক-পাঁচটি সংখ্যার সংখ্যা আউটপুট কেসের প্রায় 41.5%, এবং সংখ্যাটি 1000,000 (বা -1,000,000) শতাংশের মাত্র 6 মিলিয়ন ভাগ, সুতরাং আউটপুট সংখ্যাটি 1,000,000 থেকে 54,000 এর মধ্যে সীমার বাইরে থাকবে 54 % সময়.

"0" এবং "-0" উভয়ই সম্ভব আউটপুট, যা আমি আশা করি কোনও সমস্যা নয়।


Doesn't this print "numbers" like -00000000167? That's not really an integer.
isaacg

1
@isaacg I don't see why that is not an integer .
Optimizer

2
@Optimizer It is, but the OP has explicitly forbidden leading 0.
Martin Ender

আপনি লুপের আগে -9 থেকে +9 এর আগে একটি এলোমেলো অ-শূন্যস্থানীয় অঙ্ক তৈরি করতে পারেন। print int(rand(20)-10)||1। যদিও আউটপুট হিসাবে 0 জেনারেট করার জন্য আমার একটি উপায় দরকার। হতে পারে || ডাই 0, শূন্যের পরে যদি চলার আবর্জনা অনুমোদিত হয়। অন্য শূন্যটি মুদ্রণের জন্য একটি ছোট পথ প্রয়োজন এবং যদি অন্য আউটপুট ছাড়াই প্রস্থান করে int(rand(20)-10)==0
Peter Cordes

@PeterCordes agreed, that's a decent approach but I don't feel like writing it and I don't think it would be competitive length-wise. Feel free to submit it on your own :)
hobbs

2

Perl, 114 Chars

use Math::BigInt;sub r{$x=Math::BigInt->new(0);while(rand(99)!=0){$x->badd(rand(2**99)-2**98);}print($x->bstr());}

Breakdown:

use Math::BigInt;               -- include BigIntegers
  sub r{                        -- Define subroutine "r"
    $x=Math::BigInt->new(0);    -- Create BigInteger $x with initial value "0"
      while(rand(99)!=0){       -- Loop around until rand(99) equals "0" (may be a long time)
        $x->badd(               -- Add a value to that BigInt
          rand(2**99)-2**98);   -- Generate a random number between -2^98 and +2^98-1
        }print($x->bstr());}    -- print the value of the BigInt

The probability of getting a value between -1.000.000 and 1.000.000 are tending towards zero BUT it is possible.

দ্রষ্টব্য: এই সাবরুটিনটি দীর্ঘ সময়ের জন্য চলতে পারে এবং একটি "মেমরির আউট!" দিয়ে ত্রুটিযুক্ত হতে পারে! ত্রুটি কিন্তু এটি প্রযুক্তিগতভাবে কোনও পূর্ণসংখ্যার উত্স তৈরি করেছে যা প্রশ্নের মধ্যে বলা হয়েছে।

পার্ল, 25

sub r{rand(2**99)-2**98;}

+/- 2 ^ 99 এর সীমার মধ্যে একটি এলোমেলো পূর্ণসংখ্যার উত্পন্ন করে।

ভাঙ্গন

sub r{                    -- Define subroutine "r"
     rand(2**99)          -- Generate a random integer between 0 and 2^99
                -2**98;}  -- Subtract 2^98 to get negative values as well

1 মিলিয়ন নমুনা দিয়ে পরীক্ষিত:

~5 are inside the range of +/-1.000.000
~999.995 are outside that range
= a probability of ~99,99% of generating an integer outside that range.
Compare that number to the probability of 2.000.000 in 2^99: It is approx. the same.

এটি সমস্ত বিধি পূরণ করে:

  • 1 পূর্ণসংখ্যা
  • যে কোনও পূর্ণসংখ্যা সম্ভব
  • সমস্ত উত্পন্ন পূর্ণসংখ্যার কমপক্ষে 50% (আমার ক্ষেত্রে 99,99%) +/- 1.000.000 এর সীমার বাইরে।

এটি কাজ করে কারণ অন্তর্নিহিত এলোমেলো সংখ্যা জেনারেটর উত্পন্ন প্রতিটি বিটের সমান সম্ভাবনার সংজ্ঞা দেয়, এভাবে উত্পন্ন পূর্ণসংখ্যার ক্ষেত্রেও তা করে।
প্রতিটি পূর্ণসংখ্যার 1/2 ^ 99 উত্পন্ন হওয়ার সম্ভাবনা থাকে।

সম্পাদনা:

আমাকে আরও বেশি বাড়াতে হয়েছিল যাতে আরও বড় সংখ্যার উত্পন্ন হয়। আমি 99 বেছে নিয়েছি কারণ এটি কোডটি যতটা সম্ভব সংক্ষিপ্ত রাখে।


কোন upperর্ধ্ব / নিম্ন সীমানা না হওয়া উচিত বলে আমরা একমত হইনি? উদাহরণস্বরূপ, পূর্ণসংখ্যা 2 ^ 31 + 1 এর 0 সম্ভাবনা থাকে, নিয়ম 2
অপ্টিমাইজার

@ অপ্টিমাইজার আমার জন্য একটি পূর্ণসংখ্যা অনেকগুলি প্রোগ্রামিং ভাষার হিসাবে সংজ্ঞায়িত করা হয়: -2^31এবং +2^31-1(32 বিট) এর সীমার মধ্যে একটি সংখ্যা । আপনি যদি বৃহত্তর পূর্ণসংখ্যার উত্পাদন করতে চান তবে আপনি সহজেই এক্সটেন্ডারগুলি বাড়াতে পারেন তবে পার্লের প্রয়োগের উপর নির্ভর করে এটি ব্যর্থ হতে পারে।
জায়ান্ট্রি ট্রি

আমি কেবল দেখেছি যে হাস্যকরভাবে বড় পূর্ণসংখ্যাটিও উত্পন্ন করতে হবে। আমি আমার কোডটি দ্রুত সম্পাদনা করব।
জায়ান্ট্রি ট্রি

@MartinBüttner I tried my best to meet the spec of the question. It's just not possible for me (at least not without help) to generate infinitely large integers. Perl's largest integer is about 1.7e308 which is a limit I cannot control.
GiantTree

@MartinBüttner Both are possible but eg. the string would overflow after 2gb of data making it finite again. It's hard to say that a number should be infinitely large if there are issues with memory. I'll come up with a different approach soon using BigInts. Also the integer does not overflow at 1.7e308 it just gets converted to infite (1.#INF to be exact)
GiantTree

2

C#, 126 107 bytes

string F(){var a=new System.Random();var b=a.Next(-1E6,1E6+1)+"";while(a.Next(1)>0)b+=a.Next(10);return b;}

Ungolfed:

string F()
{
    System.Random rand = new System.Random();
    string rtn = rand.Next(-1E6, 1E6 + 1) + "";
    while (rand.Next(1) > 0)
         rtn += a.Next(10);
    return rtn;
}

Chance to generate a number of n digits is 1/2^(n-10), which is greater than 0 for all positive n, and 1/2 for n=11. Also creates leading zeros, which do not seem to be disallowed in the original question or any of its comments.


When using using System;, you don't need System.Random twice, but just Random, right?
Charlie

@Charlie This is a function, so I can't use using statements. It would only save 1 char anyways.
LegionMammal978

1
You can save 1 char by removing the space at -1E6, 1E6+1.
ProgramFOX

2

Perl, 62 bytes

print $n=int rand(20)-10;while($n&&rand>.1){print int rand 10}

I had the same idea as @Hobbs, of generating a digit at a time, but his code didn't satisfy the added no-leading-zeros requirement. Generating the first digit instead of just the sign solved that. And unless there's a shorter way to exit if we printed a zero, or a shorter way to generate the leading -9 to 9, this should do it for size.

In a shell loop: while perl -e '...'; do echo;done |less

I think this is one of the shortest that doesn't require infinite RAM to satisfy the problem. As a bonus, the output is isn't strongly biased towards anything, and runtime is very fast.

I tried using bitwise and to save a character in the while condition, but I think this ends up being true more often, so the loop ends sooner. Would need more chars to adjust other things to counter that, to maintain the probability of generating abs(output) > 1M.


Nice, you squeezed out some things that I wouldn't have thought of :)
hobbs

1

Javascript (73)

This solution uses that you can construct a number with base n by multiplying the previous number with n and adding a digit in base n. We have an additional ..?..:.. in there to be able to create all negative integers. The following code should be tested in a browser console.

b=Math.round;c=Math.random;x=0;while(b(c()*99)){x*=b(c())?2:-2;x+=b(c())}

The probability to get an integer >= 2^1 (or <= -(2^1)) is equal to the chance that the loop is ran 2 times. The chance of that happening is (98/99)^2. The chance of getting a number that is greater than 2^20 (or <= -(2^20)) is therefore (98/99)^21 = 0.808 or 81%. This is all in theory though, and assuming that Math.random is truely random. It obviously isn't.


Snippet testing this code. Also in a more readable fashion.


1
ওপি এখন নিশ্চিত করেছে যে আপনি অনুমান করতে পারবেন যে আপনার পিআরএনজি সত্যিই এলোমেলো, তা না হলেও।
ট্রিকোপলাক্স

1

গল্ফস্ক্রিপ্ট, 20 বাইট

0{)8.?rand}do.2&(*4/

হ্যাঁ, এটিও ধীর ধরণের।

সিজেএম এবং পাইথের মতো ভাষার তুলনায় গল্ফস্ক্রিপ্টটি ভার্ভোজ র্যান্ডম সংখ্যা জেনারেশন কীওয়ার্ড ( rand) এর সাথে ভুগছে । এই প্রতিবন্ধকতা কাটিয়ে উঠতে, আমাকে এটি একবার ব্যবহার করার উপায় খুঁজে বের করতে হবে।

এই কোড বারবার 0 ও 8 এর মধ্যে একটি র্যান্ডম সংখ্যা অবচয় করে কাজ করে 8 = 16,777,215 সমেত -1, এবং একটি কাউন্টার বৃদ্ধিশীল পর্যন্ত র্যান্ডম সংখ্যা 0. হতে ফলে পাল্টা মান একটি হয়েছে ঘটে জ্যামিতিক বন্টন একটি সঙ্গে মধ্যমা প্রায় -1 / log 2 (1 - 1/8 8 ) ≈ 11,629,080, সুতরাং এটি "1000,000 এরও কম সময়ে 50% সময়ের" পরীক্ষার সাথে মিলিত হয়।

হায়রে, এইভাবে উত্পন্ন এলোমেলো সংখ্যাটি সর্বদা কঠোরভাবে ইতিবাচক। সুতরাং, অতিরিক্ত .2&(*4/অংশ এটি নেতিবাচক বা শূন্য হয়ে উঠতে প্রয়োজন। এটি সংখ্যার দ্বিতীয়-সর্বনিম্ন বিটটি বের করে (যা এভাবে হয় 0 বা 2), এটি -1 বা 1 করার জন্য এটি হ্রাস করে, মূল সংখ্যার সাথে এটিকে গুণ করে এবং ফলাফলটিকে 4 দ্বারা ভাগ করে (পরিত্রাণ পেতে) সর্বনিম্ন দুটি বিট, যা এখন চিহ্নের সাথে সম্পর্কযুক্ত এবং ফলাফলটি শূন্য হতে দেয়)) 4 দ্বারা বিভাজনের পরেও এলোমেলো সংখ্যার পরম মানের এখনও -1 / লগ 2 (1 - 1/8 8 ) / 4 ≈ 2,907,270 এর মাঝারি রয়েছে, সুতরাং এটি এখনও 50% পরীক্ষায় উত্তীর্ণ হয়।


1

জাভাস্ক্রিপ্ট, 81 বাইট

এই কোডটি সমস্ত নিয়ম পূরণ করে:

  • ইতিবাচক সম্ভাবনার সাথে কোনও পূর্ণসংখ্যা আউটপুট করুন
  • কমপক্ষে 50% সম্ভাব্যতা সহ +/- 1000000 এর সীমার বাইরে আউটপুট পূর্ণসংখ্যাগুলি
  • 0আউটপুট কোন নেতৃস্থানীয়

বোনাস হিসাবে, অ্যালগরিদম হে (লগ 10 এন) এর সময়ের জটিলতায় চলে তাই এটি প্রায় তাত্ক্ষণিকভাবে পূর্ণসংখ্যাকে ফেরত দেয়।

for(s="",r=Math.random;r()>.1;s+=10*r()|0);r(s=s.replace(/^0*/,"")||0)<.5?"-"+s:s

এটি একটি REPL পরিবেশ অনুমান করে। আপনার ব্রাউজারের কনসোলে উপরের কোডটি চালানোর চেষ্টা করুন, বা নীচে স্ট্যাক স্নিপেট ব্যবহার করুন:

D.onclick = function() {
  for(s="", r=Math.random;r()>.1; s+=10*r()|0);
  P.innerHTML += (r(s=s.replace(/^0*/,"") || 0) <.5 ?"-" + s : s) + "<br>"
}
<button id=D>Generate a random number</button><pre id=P></pre>

অ্যালগরিদম :

  • sপর্যন্ত স্ট্র্যান্ডে এলোমেলো সংখ্যা সংযুক্ত রাখুন Math.random() > 0.1
  • উপর ভিত্তি করে Math.random() > 0.5, সংখ্যাটিকে নেতিবাচক করুন (এর sসাথে স্ট্রিং প্রিপেন্ড করে -)।

এই অ্যালগরিদমের সমস্ত সংখ্যায় অভিন্ন বিতরণ নেই। উচ্চতর অঙ্কের গণনা সহ পূর্ণসংখ্যাগুলি নিম্নের চেয়ে কম সম্ভাব্য। লুপ পুনরাবৃত্তির জন্য প্রত্যেকটিতে 10% সম্ভাবনা রয়েছে যে আমি বর্তমান অঙ্কে থামব। আমাকে কেবলমাত্র এটি নিশ্চিত করতে হবে যে আমি সময়ের চেয়ে 50% এরও বেশি 6 সংখ্যার পরে থামি।

@ নটকি এই সমীকরণটি উপরের শর্তের ভিত্তিতে সুযোগের শতাংশের থামার সর্বাধিক মান ব্যাখ্যা করে:

1 - 50%^(1/6) ≈ 0.11

সুতরাং প্রশ্নের তিনটি নিয়মকে সন্তুষ্ট করার জন্য ০.০ ভাল পরিসরের মধ্যে রয়েছে।


এই উত্তর সম্পর্কে আমাকে বিভ্রান্ত করার জন্য কয়েকটি জিনিস রয়েছে। , আপনি অধিকৃত যে Math.random () র্যান্ডম সংখ্যার একটি অভিন্ন বন্টন উত্পন্ন কারণ বৈশিষ্ট রাজ্যের এটা বাস্তবায়ন নির্ভরশীল হয়। ধরে নিই যে এটি অভিন্ন বিতরণ, পি (ম্যাথআর্যান্ডম ()> 0.1) = 0.9 সুতরাং এটি প্রতিটি পুনরাবৃত্তির মধ্যে শেষ হয়ে যাওয়ার বিশাল সম্ভাবনা রয়েছে। ফায়ারফক্স 34.0 উবুন্টু আপনার এলগরিদম রানের একটি বাস্তবায়ন আমাকে ~ 0.47 (<0.5) প্রত্যেক সময় যে আমি এটি পরীক্ষা একটি সম্ভাব্যতা দেয়: jsfiddle.net/WK_of_Angmar/dh8gq4pb
Wk_of_Angmar

এছাড়াও, আপনি কীভাবে কোনও ইনপুট ছাড়াই অ্যালগরিদমের জন্য সময়ের জটিলতা গণনা করতে পেরেছেন?
Wk_of_Angmar

1

টিআই-বেসিক, 14 বাইট

1-2int(2rand:randNorm(AnsE6,9

@ এসএসডেকট্রোলের আর উত্তরের অনুরূপ, এটি গাউসীয় বন্টন থেকে গড় -1,000,000 বা 1,000,000, এলোমেলোভাবে বেছে নেওয়া এবং মানক বিচ্যুতি নিয়ে আসে 9.। বিতরণটি সীমান্তিক নয় সুতরাং তাত্ত্বিকভাবে এটি কোনও পূর্ণসংখ্যার উত্পাদন করতে পারে।

ব্যাখ্যা :

1-2int(2rand     - get a random integer 0 or 1, then multiply by 2 and subtract 1
:                - this gives the number 1 or -1 (with equal probability) to Ans
randNorm(AnsE6,9 - displays Gaussian distribution with mean (Ans * 1,000,000) and std. dev. 9

তবে এটি "2" বা "-2" উত্পন্ন করতে পারে?
কেনেটিএম

হ্যাঁ, অবশ্যই tibasicdev.wikidot.com/randnorm
টিমটেক

1
ঠিক আছে কোডটি ভুলভাবে পড়ুন (চিন্তাভাবনাটির :অর্থ "মুদ্রণ" ব্যাখ্যাটি কীভাবে উপস্থাপন করা হয় তার কারণে)। তবে এটি কি 20 টির বেশি সংখ্যার সংখ্যা তৈরি করতে পারে?
কেনেটিএম

কোন নির্বিচারে দীর্ঘ পূর্ণসংখ্যা আউটপুট হিসাবে সম্ভব? এটি কি এর পরিসীমা দ্বারা সীমাবদ্ধ নয় randNorm?
অপ্টিমাইজার

"বিতরণটি সীমাহীন তাই তত্ত্ব অনুসারে এটি কোনও পূর্ণসংখ্যার উত্পাদন করতে পারে।" কোন সীমা নেই।
টিমটেক

1

বাশ, 66

LANG=C sed -r '/^-?(0|[1-9][0-9]*)$/q;s/.*/5000000/;q'</dev/random

এটা প্রায় সবসময় 5000000. ছাপে কিন্তু যদি একটি বৈধ নম্বর পাওয়া /dev/random, এটা যে সংখ্যা পরিবর্তে প্রিন্ট করবে।

এবং এটি দ্রুত:

LANG=C sed -r '/^-?(0|[1-9][0-9]*)$/q;s/.*/5000000/;q'</dev/urandom

1
@Optimizer It is supposed to be slow. That's because it is a real random source. But you can test it with /dev/urandom which is less random.
jimmy23013

@Optimizer How would that be taking manual input? It's reading a file, but everything's a file.
Nit

@Optimizer I simply don't understand the point you're going for.
Nit

/dev/urandomশেল স্ক্রিপ্ট থেকে পড়া মূলত rand()অন্য ভাষায় কল করার মতো । যদিও আপনি যদি পশিক্স না করে সত্যিই ব্যাশ ব্যবহার করছেন তবে আপনি এলোমেলো নম্বর পেতে পারেন echo $RANDOMwiki.ubuntu.com/DashAsBinShhexdump /dev/urandom খালি- পসিক্স -সর্বনিম্নের সমতুল্য হিসাবে দেয় /bin/dash
পিটার কর্ডেস

1

সি ++, 95 বাইট

void f(){int d=-18,s=-1;while(s<9){d=(rand()%19+d+9)%10;cout<<d;s=9-rand()%10*min(d*d+s+1,1);}}

সম্প্রসারিত:

void f() {
    int d=-18,s=-1;
    while(s<9) {
        d=(rand()%19+d+9)%10;
        cout<<d;
        s=9-rand()%10*min(d*d+s+1,1);
    }
}

ব্যাখ্যা:

একটি র্যান্ডম মূল্যবান স্যুইচটি ফাংশনটি থামাতে প্রয়োজনীয় মান গ্রহণ না করা অবধি ফাংশনটি ক্রমাগত এলোমেলো অঙ্ক মুদ্রণ অব্যাহত রাখে। d হ'ল ভেরিয়েবল যা পরবর্তী অঙ্কের মান মুদ্রণের জন্য রাখে। s হ'ল স্যুইচ পরিবর্তনশীল যা অন্তর [0, 9] এ এলোমেলো পূর্ণসংখ্যার মান গ্রহণ করে, যদি s == 9 তবে আর কোনও অঙ্ক মুদ্রণ করা হয় না এবং মজাদার সমাপ্তি ঘটে।

প্রথম অংকের বিশেষ চিকিত্সা দেওয়ার জন্য ডি এবং এসগুলি ভেরিয়েবলগুলি সূচনা করা হয় (এটি অন্তর থেকে নেওয়া [-9, 9] এবং যদি প্রথম সংখ্যাটি শূন্য হয় তবে নেতৃস্থানীয় শূন্যগুলি এড়ানোর জন্য ফাংশনটি শেষ হওয়া আবশ্যক)। D এর মান d = র্যান্ড ()% 10 হিসাবে নির্ধারিত হতে পারে তবে প্রথম সংখ্যাটি negativeণাত্মক হতে পারে না। d এর পরিবর্তে d = (র্যান্ড ()% 19 + d + 9)% 10 হিসাবে নির্ধারিত হয়েছে এবং -18 এ আরম্ভ করা হয়েছে যাতে d এর প্রথম মানটি [-9, 9] থেকে শুরু করে এবং পরবর্তী মানগুলি সর্বদা [0 থেকে হতে পারে , 9]।

ভেরিয়েবল গুলি এলোমেলোভাবে [0, 9] থেকে হয়, এবং যদি 9 এর সমান হয় তবে ফাংশনটি শেষ হয়, সুতরাং প্রথম অঙ্কটি প্রিন্ট করার পরে পরেরটি 90% এর সম্ভাব্যতার সাথে মুদ্রিত হবে (ধরে নিবেন র্যান্ড (সত্যিই এলোমেলো, এবং তৃতীয় শর্ত পূরণ করার জন্য)। s কে সহজেই s = র‌্যান্ড ()% 10 হিসাবে নির্ধারণ করা যেতে পারে, তবে সেখানে একটি ব্যতিক্রম রয়েছে, যদি প্রথম সংখ্যাটি শূন্য হয় তবে ফাংশনটি শেষ হওয়া আবশ্যক। এই জাতীয় ব্যতিক্রম পরিচালনা করতে, s কে 9 = র্যান্ড ()% 10 * মিনিট (d * d + s + 1,1) হিসাবে বরাদ্দ করা হয়েছে এবং -1 হিসাবে আরম্ভ করা হয়েছে। যদি প্রথম অঙ্কটি শূন্য হয়, মিনিট 0 এবং s 9-0 = 9 এর সমান হবে। এর ভেরিয়েবলের অ্যাসাইনমেন্ট সর্বদা [0, 9] এর মধ্যে থাকবে, সুতরাং ব্যতিক্রমটি কেবল প্রথম অঙ্কে ঘটতে পারে।

বৈশিষ্ট্য (অনুমান করা র্যান্ড () সত্যই এলোমেলো)

  • পূর্ণসংখ্যার অঙ্কটি অঙ্ক দ্বারা মুদ্রিত হয়, শেষের মুদ্রণের পরে 90% মুদ্রণের একটি নির্দিষ্ট সম্ভাবনার সাথে।

  • 0 হল পূর্ণসংখ্যা যেখানে মুদ্রণের সর্বোচ্চ সম্ভাবনা রয়েছে, প্রায় 5.2% সম্ভাব্যতা সহ।

  • বিরতি [-10 ^ 6, 10 ^ 6] এ পূর্ণসংখ্যার মুদ্রণের সম্ভাব্যতা প্রায় 44% (গণনাটি এখানে লিখিত হয় না)।

  • ইতিবাচক এবং নেতিবাচক পূর্ণসংখ্যার একই সম্ভাবনা (~ 47.4%) দিয়ে মুদ্রিত হয়।

  • সমস্ত সংখ্যা একই সম্ভাব্যতার সাথে মুদ্রিত হয় না। উদাহরণস্বরূপ: পূর্ণসংখ্যা মুদ্রণের মাঝখানে, শেষ সংখ্যাটি 5 হলে, অঙ্ক 3 এর পরবর্তী মুদ্রণের সম্ভাবনা কিছুটা কম থাকবে lower সাধারণভাবে, যদি শেষ অঙ্কটি ডি হয়, তবে অঙ্কটি (d + 18)% 10 এর পরের মুদ্রণের কিছুটা কম সুযোগ থাকবে।

উদাহরণ ফলাফল (10 মৃত্যুদণ্ড)

-548856139437
7358950092214
507
912709491283845942316784
-68
-6
-87614261
0
-5139524
7

Process returned 0 (0x0)   execution time : 0.928 s
Press any key to continue.

1

বাশ, 42 বাইট

printf "%d\n" 0x$(xxd -p -l5 /dev/random)
ওএসএক্স-এ / ডি / র্যান্ডম কেবলমাত্র র্যান্ডম বাইটস, এবং xxd -p -l5আস্কি অক্ষরের 5 টিকে হেক্সে রূপান্তরিত করে এবং printfএটি দশমিক বিন্যাসে রূপান্তরিত করে।


0

পাইথ , 11 বাইট

WOyG~ZtOT)Z

দ্রষ্টব্য: এই প্রোগ্রামটি সম্ভবত কোনও বাস্তব কম্পিউটারে মেমরির ত্রুটির সাথে ক্রাশ হবে। এটি পরীক্ষা করার জন্য, Gএকটি সংক্ষিপ্ত স্ট্রিংয়ের সাথে প্রতিস্থাপনের চেষ্টা করুন , যেমন এই কোডটিতে, যা প্রায় 28000 এর গড় সংখ্যা তৈরি করে:

pyth -c 'WOy"abcdefghijklm"~ZtOUT)Z'

এই কোডটি Zলুপ করে, প্রতিটি পুনরাবৃত্তির উপর লুপ থেকে বেরিয়ে আসার সম্ভাবনা 2 26 -26 সহ -1 থেকে 8 এ পর্যন্ত একটি এলোমেলো সংখ্যা যুক্ত করে। 2 (-26 সম্ভাবনা বর্ণমালা ( ) Oএর সমস্ত সাবসেটের ( y) এর সেটটির একটি এলোমেলো উপাদান ( ) নির্বাচন করে প্রাপ্ত হয় G

প্রযুক্তিগত বিবরণ এবং ন্যায়সঙ্গততা:

সম্ভাব্যতা 2 ^ -26 দুটি সত্য থেকে উদ্ভূত: yযখন সিকোয়েন্সগুলিতে ডাকা হয় তখন পাওয়ার-সেট ফাংশন হয়, একটি ইনপুটটির সমস্ত উপ-তালিকার তালিকা তৈরি করে। যেহেতু ইনপুটটি, G26 টি অক্ষর দীর্ঘ, এই পাওয়ার-সেটটিতে yG2 ^ 26 টি এন্ট্রি রয়েছে। OyGযারা 2 ^ 26 এন্ট্রি থেকে একটি এলোমেলো উপাদান নির্বাচন করে। ঠিক সেইভাবে প্রবেশকারীগুলির মধ্যে একটি, খালি স্ট্রিং, Wযখন লুপটি পাস হবে তখন মিথ্যা হিসাবে মূল্যায়ন করবে । সুতরাং, প্রতিবার লুপ থেকে বেরিয়ে আসার সম্ভাবনা 2 ^ -26।

যে কোনও নির্দিষ্ট সংখ্যক লুপ চক্রের কে, কে * ৩.৩ + মিটার নম্বর পাওয়ার এবং কে * ৩.৫ - মি পাওয়ার সম্ভাবনা সমান, কারণ একটি মোট অর্জনকারী সংযোজনের প্রতিটি অনুক্রম উল্টানো যেতে পারে, -1 -> 8, 0 -> 7 ইত্যাদি, অন্যটি অর্জন করতে। অতিরিক্তভাবে, কে * ৩.৫ এর নিকটবর্তী সংখ্যাগুলি আরও দূরে সংখ্যার চেয়ে স্পষ্টভাবে বেশি সম্ভাবনা রয়েছে। সুতরাং, কে> 2000000 / 3.5 = 571428.5 যদি 1000000 এর বেশি নম্বর পাওয়ার সম্ভাবনা 75% এর বেশি হয়, কারণ এই সংখ্যার উপরের কিছু ফলাফল নীচের সমস্ত ফলাফলের সাথে এক-এক-এক যোগাযোগের জন্য রাখা যেতে পারে can সংখ্যা, এবং উপরের চেয়ে অর্ধেকেরও কম, 1000000 এর কম বয়সীদের সাথে একের সাথে একযোগে যোগাযোগ করা যেতে পারে at কমপক্ষে 571429 লুপ পাওয়ার সম্ভাবনাটি (1-2 ^ -26) ^ 571429, যা কোনও নয় (1-2 ^ -26 * 571429) এর চেয়ে কম, প্রথম 571429 চেষ্টা করে লুপ ছেড়ে যাওয়ার প্রত্যাশিত সংখ্যা, যা 99.1%। সুতরাং, 99.1% বা ততোধিক পরীক্ষায়, কমপক্ষে 1000000 পাওয়ার 75% বা তার বেশি সম্ভাবনা রয়েছে, সুতরাং 1000000 এর বেশি হওয়ার 50% এরও বেশি সম্ভাবনা রয়েছে।

এই কোডটি এমন আচরণের উপর নির্ভর করে Oযেখানে 3 দিন আগে দুর্ঘটনাক্রমে একটি বাগ প্রবর্তিত হয়েছিল এবং আজ এটি ঠিক করা হয়েছিল। এটি 22 ডিসেম্বর এর আগে বা আজকের পরে পাইথ 3 এর যে কোনও সংস্করণে কাজ করা উচিত। নিম্নলিখিত কোডটি সমতুল্য এবং সর্বদা কাজ করেছে:

WOyG~ZtOUT)Z

অনলাইন সংকলকটির কী হল?
অপটিমাইজার

ওয়েবসাইটটির সাথে @ অপ্টিমাইজার ইস্যু, আমি এটিতে কাজ করব।
ইসাকাক

আহ .. শীতল। আমার CJam উত্তর গতকাল এর Pyth অনুবাদ কাজ চেয়েছিলেন করে দেখতে পান যে 404. দেয়
অপ্টিমাইজার

0

জাভা, 113 বাইট

void g(){String a=Math.random()>0?"10":"01";for(;Math.random()>0;)a+=(int)(Math.random()*2);System.out.print(a);}

এই প্রোগ্রামটি স্ট্যান্ডার্ড আউটপুট প্রবাহে একটি বাইনারি সংখ্যা প্রিন্ট করে। আপনাকে কিছুক্ষণ অপেক্ষা করতে হবে কারণ এটির সংখ্যাটি শেষ হওয়ার সম্ভাবনা (বা এটি ইতিবাচক হচ্ছে) প্রায় 0 হয় 0. ধারণাটি যে উত্পন্ন কোনও সংখ্যার পরম মান 1 মিলিয়নেরও কম নয়, তবুও সম্ভব।

Ungolfed:

void g(){
    String a=Math.random()>0?"10":"01";             //Make sure there are no trailing zeroes.
    for(;Math.random()>0;)a+=(int)(Math.random()*2);//Add digits
    System.out.print(a);                            //Print
}

নমুনা আউটপুট: পোস্ট করা হবে যখন একটি সংখ্যা তৈরি করা হচ্ছে।


0

জাভা (জেডিকে) , 140 127 বাইট

()->{int i;var o=System.out;for(o.print(i=(int)(19*Math.random())-10);i!=0&Math.random()<.9;)o.print((int)(11*Math.random()));}

-13 bytes লুপ শিরোনামে আরও যুক্তি স্নিগ্ধ করে - @ সেলিংক্যাটকে ধন্যবাদ

Try it online!

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