কমান্ড-লাইনে আমি এলোমেলোভাবে কীভাবে পাব?


11

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

সাধারণভাবে, আমার কাছে যদি নিম্নরূপে মৃত্যুদন্ড কার্যকর করার আদেশ থাকে তবে আমি কীভাবে এলোমেলোতা পেতে পারি :?

#!/bin/bash
<command_1>
<command_2>
<command_3>
.
.
.
<command_n>

তারপরে আমি স্ক্রিপ্টটি চালানোর সময় উপরের সম্ভাব্যতা থেকে এলোমেলোভাবে একটি কমান্ড কার্যকর করতে চাই !

কিভাবে যে কি?


ব্যবহারিক উদাহরণ: Askubuntu.com/a/257471/163331
পার্টো

@ পার্টো আমি ইতিমধ্যে এর আগে উত্তর হিসাবে যুক্ত করেছি
পাণ্ড্য

আমি উত্তর দেওয়ার চেষ্টা করছিলাম না, কেবল একটি উদাহরণ দিচ্ছিলাম যেখানে এটি ব্যবহার করা যেতে পারে।
পার্টো

উত্তর:


21

চলক $RANDOM(আসলে একটি বাশ ফাংশন) 0 থেকে 32767 সহ অন্তর্ভুক্ত সহ একটি এলোমেলো সংখ্যা প্রদান করে।

আপনি সাধারণত কিছু সংখ্যায় ভাগ করে এর পরিসর সীমাবদ্ধ করতে চান এবং এর অবশিষ্ট অংশটি নিতে পারেন, যেমন।

# output a random number 0 to 3
echo $((RANDOM % 4))

এই সরল উদাহরণে এটি কোনও বিভাজকের জন্য খুব সামান্য পক্ষপাতদুষ্ট হবে যা 32768 তে সমানভাবে বিভক্ত হয় না (উদাহরণস্বরূপ, এমন কোনও কিছু যা দুজনের শক্তি নয়) তবে আপনার দৃশ্যে আমি মনে করি না যে আপনি সমস্যায় পড়ে যাবেন সামান্য পক্ষপাত দ্বারা।

একটি এলোমেলো ফাইল বাছাই করতে আপনি নিজের ফাইলগুলির নাম কিছু লিখবেন:

file0.jpg
file1.jpg
file2.jpg
file3.jpg

এবং তারপরে আপনি এলোমেলো একটি চয়ন করতে পারেন

# output a random file from file0.jpg to file3.jpg
echo "file$((RANDOM % 4)).jpg"

1
আপনি এটি নিজের উত্তর হিসাবে পোস্ট করতে চাইতে পারেন - এটি তখন আপনার খ্যাতি অর্জন করতে পারে।
থোমাস্রুটার

দরকারী সাহায্য RANDOM, আমি গ্রহণ!
পান্ড্য

1
নোট করুন যে RANDOM এর সম্ভাব্য মানগুলির সংখ্যা (32768) এন দ্বারা বিভাজ্য না হলে RANDOM% N সমান বন্টনের ফলাফল দেয় না এটি দেখতে, কল্পনা করুন যে RANDOM এর পরিসীমা পরিবর্তে 0-4 (5 সম্ভাব্য মান) ছিল এবং এবং এন 2 হ'ল: উত্পাদনের জন্য $ র্যান্ডোম% 2 এর তিনটি উপায় রয়েছে (যদি $ র্যান্ডম 0, 2, 4 দেয় তবে) এটির ফলদানের জন্য দুটি উপায় (1, 3)। সমান বন্টনের জন্য আপনাকে 32767 এর চেয়ে ছোট এন এর সর্বাধিক একাধিক সন্ধান করতে হবে এবং এর চেয়ে বড় কোনও এলোমেলো মানগুলি উপেক্ষা করতে হবে। পূর্ববর্তী উদাহরণ উপেক্ষা 5, যা 4. অধিক মাপের হয় পরিমাণ চাই সালে
Doval

@ ডোভাল আমি বলেছিলাম যে আমার উত্তরে আপনি কি তা দেখেছেন?
থোমাস্রুটার

আমার খারাপ, আমি কিছুটা মিস করেছি @
ডোভাল

7

@ নিওন_ওভারলোড উত্তর অনুসারে (ব্যবহার করে RANDOM),
আমি RANDOMউদাহরণ হিসাবে স্ক্রিপ্টটি নিম্নরূপে রাখতে পারি (4 কমান্ডের জন্য):

#!/bin/bash
random_selection=$((RANDOM % 4))

case $random_selection in

  0)
  <command_1>
  ;;

  1)
  <command_2>
  ;;

  2)
  <command_3>
  ;;

  3)
  <command_4>
  ;;

esac

2

আপনি যদি কম্পিউটারের দ্বারা উত্পাদিত না হয়ে কোনও বাহ্যিক সাইটের মাধ্যমে এলোমেলোতা চান তবে আপনি এই স্ক্রিপ্টটি ব্যবহার করতে পারেন:

curl "http://www.random.org/integers/?num=1&min=$1&max=$2&col=1&base=10&format=plain&rnd=new"

র‌্যান্ড (এমআইএন) (ম্যাক্স) হিসাবে চালান (ধরে নিচ্ছেন আপনি / ইউএসআর / বিন / র্যান্ড হিসাবে সংরক্ষণ করেছেন)

এটি ইতিমধ্যে ইনস্টল না থাকলে আপনাকে প্রথমে কার্ল ইনস্টল করতে হবে (sudo apt-get ইনস্টল কার্ল)।


0

আপনি জিএনইউ কোর্টিলshuf থেকে কমান্ড ব্যবহার করতে পারেন ।

NAME
       shuf - generate random permutations

SYNOPSIS
       shuf [OPTION]... [FILE]
       shuf -e [OPTION]... [ARG]...
       shuf -i LO-HI [OPTION]...

DESCRIPTION
       Write a random permutation of the input lines to standard output

উদাহরণ:

$ shuf -i 1-5
4
1
2
5
3

$ shuf -e Debian Ubuntu Trisquel 
Trisquel
Debian
Ubuntu

এখন, একটি এলোমেলো প্রবেশের জন্য আপনি -n 1প্রথম লাইনটি আউটপুট ব্যবহার করতে পারেন ।

1-100 থেকে র্যান্ডম সংখ্যা মুদ্রণের জন্য উদাহরণ:

$ shuf -i 1-100 -n 1
37

যদি আপনি fileনিম্নলিখিত বিষয়বস্তু সহ:

$ cat file
command-1
command-2
command-3
command-4
command-5

আপনি এর মতো কিছু করতে পারেন:

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