একটি জাভাস্ক্রিপ্ট অ্যারে থেকে একটি এলোমেলো মান পাওয়া


791

বিবেচনা:

var myArray = ['January', 'February', 'March'];    

আমি কীভাবে জাভাস্ক্রিপ্ট ব্যবহার করে এই অ্যারে থেকে একটি এলোমেলো মান নির্বাচন করতে পারি?

উত্তর:


1478

এটি একটি সাধারণ এক-লাইনার

const randomElement = array[Math.floor(Math.random() * array.length)];

উদাহরণ

const months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
const randomMonth = months[Math.floor(Math.random() * months.length)];

console.log("random month =>", randomMonth);


9
@ সাফায়ারসান এটি সঠিক। Math.floor(Math.random(...))কলটি নোট করুন , যা গোল হয়।
ashes999

32
আহ, আমি নতুন কিছু শিখেছি আমি সেই ক্ষেত্রটি নিয়ে আলোচনা করছিলাম যেখানে এটি হুবহু 1 সমান, তবে দৃশ্যত (ডাব্লু 3 স্কুল অনুসারে) ম্যাথ.রেন্ডম 0 টি সমেত এবং একচেটিয়া 1 এর মধ্যে রয়েছে। আমার খারাপ।
নীলাফসুন

13
আমি ভুল হতে পারি, তবে আমি var rand = myArray[Math.random() * myArray.length>>0]কিছুটা দ্রুত হওয়া স্মরণ করছি
12

6
কেবলমাত্র যদি আপনি ইতিমধ্যে লোডাশ ব্যবহার করছেন তবে আপনি _.সেম্পল (অ্যারে) ব্যবহার করতে পারেন
গ্যাব্রিয়েল ম্যাতুসেভিচ

2
আমি এই রূপটি পছন্দ করি:var rand = myArray[Math.random() * myArray.length | 0]
নিকোলাস

76

আপনি যদি ইতিমধ্যে আপনার প্রকল্পের আন্ডারস্কোর বা লড্যাশ অন্তর্ভুক্ত করে থাকেন তবে আপনি ব্যবহার করতে পারেন _.sample

// will return one item randomly from the array
_.sample(['January', 'February', 'March']);

যদি এলোমেলোভাবে আপনার একাধিক আইটেম পেতে হয় তবে আপনি এটিকে আন্ডারস্কোরের মধ্যে দ্বিতীয় যুক্তি হিসাবে পাস করতে পারেন:

// will return two items randomly from the array using underscore
_.sample(['January', 'February', 'March'], 2);

বা _.sampleSizeলড্যাশে পদ্ধতিটি ব্যবহার করুন :

// will return two items randomly from the array using lodash
_.sampleSize(['January', 'February', 'March'], 2);

টাইপস্রিপ্ট ব্যবহার করার সময়: সচেতন থাকুন যে স্ট্রিং অ্যারে প্রদত্ত "স্ট্রিং" এর পরিবর্তে রিটার্ন টাইপটি "স্ট্রিং | অপরিজ্ঞাত" হবে।
স্টিফান শ্যায়েলকে

23

প্রোটোটাইপ পদ্ধতি

আপনি যদি এলোমেলোভাবে অনেক মূল্য অর্জনের পরিকল্পনা করেন তবে আপনি এটির জন্য কোনও ফাংশন সংজ্ঞায়িত করতে চাইতে পারেন।

প্রথমে এটি আপনার কোডে কোথাও রাখুন:

Array.prototype.sample = function(){
  return this[Math.floor(Math.random()*this.length)];
}

এখন:

[1,2,3,4].sample() //=> a random element

সিসি ০.০ লাইসেন্সের শর্তাবলীতে জনসাধারণের ডোমেনে কোড প্রকাশিত হয়েছে ।


এবং এই কি করে?
কেন শার্প

3
@ কেনসার্প এটি আপনাকে .sample()এলোমেলো আইটেম পেতে যে কোনও অ্যারেতে কল করার অনুমতি দেয়
বেন অউবিন

5
নেটিভ অবজেক্টের ধরণ বাড়ানো এড়ানো উচিত। আমি আমার উত্তরটি মুছে ফেলেছি, দেখেছি এটি অনেকটা উত্সাহিত হয়েছিল, কিন্তু খারাপ অনুশীলনের প্রচার করে। এই বিষয়ে আরও আলোচনার জন্য যেমন দেখতে stackoverflow.com/questions/14034180/... এবং eslint.org/docs/rules/no-extend-native
মার্কুস Amalthea Magnuson

20

~~তুলনায় অনেক দ্রুত Math.Floor(), সুতরাং যখন ইউআই উপাদান ব্যবহার করে আউটপুট উত্পাদন করার সময় পারফরম্যান্স অপটিমাইজেশনের বিষয়টি আসে, ~~তখন গেমটি জিততে পারে। অধিক তথ্য

var rand = myArray[~~(Math.random() * myArray.length)];

তবে আপনি যদি জানেন যে অ্যারেতে Math.Floor()বিটওয়াইয়া অপারেটরের মধ্যে পুনর্বিবেচনা করতে চান তার চেয়ে কয়েক মিলিয়ন উপাদান রয়েছে এবং বিটওয়াইস অপারেটর যেমন বিরাট সংখ্যার সাথে অদ্ভুত আচরণ করে। নীচে উদাহরণ দেখুন আউটপুট সঙ্গে ব্যাখ্যা। অধিক তথ্য

var number = Math.floor(14444323231.2); // => 14444323231
var number = 14444323231.2 | 0; // => 1559421343

1
লিঙ্কটি মারা গেছে, তবে আকর্ষণীয় পোস্ট এবং আমি এটি Math.floorএখনকার চেয়ে আরও বেশি ব্যবহার করব :)
aabbccsmith

"বিটওয়াইজ নট" অপারেটরটি দ্রুতগতিতে ব্যবহার করা ততটা পঠনযোগ্য নয়, সুতরাং আপনার কাছে সবচেয়ে গুরুত্বপূর্ণ কোনটি আপনার চয়ন করতে হবে
ম্যাকিয়েজ উর্ব্বস্কি

16

বলুন যে আপনি একটি এলোমেলো আইটেম চয়ন করতে চান যা শেষ সময়ের চেয়ে আলাদা (সত্যই এলোমেলো নয়, তবে এখনও একটি সাধারণ প্রয়োজন) ...

@ মারকাসের উত্তরের ভিত্তিতে আমরা আরেকটি প্রোটোটাইপ ফাংশন যুক্ত করতে পারি:

Array.prototype.randomDiffElement = function(last) {
   if (this.length == 0) {
      return;
   } else if (this.length == 1) {
      return this[0];
   } else {
      var num = 0;
      do {
         num = Math.floor(Math.random() * this.length);
      } while (this[num] == last);
      return this[num];
   }
}

এবং এর মতো বাস্তবায়ন করুন:

var myRandomDiffElement = myArray.randomDiffElement(lastRandomElement)

11

আপনার যদি স্থির মান থাকে (যেমন একটি মাসের নাম তালিকার মতো) এবং এক-লাইন সমাধান চান

var result = ['January', 'February', 'March'][Math.floor(Math.random() * 3)]

অ্যারের দ্বিতীয় অংশটি একটি অ্যাক্সেস অপারেশন যা বর্ণিত হয়েছে [5,6,8,7] [জাভাস্ক্রিপ্টে [1,2] = 8 এ কেন?


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

@ সিগাল ওপি কখনও নির্দিষ্ট পরিবেশের জন্য জিজ্ঞাসা করেনি। এছাড়াও এই মন্তব্যটি অর্থহীন কারণ এটি এই প্রশ্নের প্রায় সমস্ত উত্তরের জন্য প্রয়োগ করা যেতে পারে;)
আইজি পাসকুল

তবে বেশিরভাগ লোক গুগল অনুসন্ধান থেকে এই প্রশ্নে পৌঁছায় এবং সমাধানটি আসল ওপির তুলনায় অন্যান্য পরিস্থিতিতে সমাধান করতে পারে।
সিগল

@ সিগল হা হা লোকেরা কোন পদ্ধতির ব্যবহার করবেন তা সিদ্ধান্ত নিতে নির্দ্বিধায় আমি সাফ কোড গাইডেন্সি ফ্যাক্স নই!
আইজি পাসকুল

10

সংক্ষিপ্ততম সংস্করণ:

var myArray = ['January', 'February', 'March']; 
var rand = myArray[(Math.random() * myArray.length) | 0]

কি করে | 0?
কেন শার্প

2
এটি ম্যাথ.ফ্লুরের মতোই ফ্লোটকে ইন্টে পরিণত করবে।
ফক্সিরিস

4
@ কেনসার্প | 0নিজেই একটি বিটওয়াস অপারেশন যা কিছুই করে না, তবে জাভাস্ক্রিপ্টে ফ্লোটগুলি কোনও বিটওয়াইজ অপারেশনের আগেই ints এ রূপান্তরিত হয় । সুতরাং এটি এমন কিছু যা আসলে কীভাবে + ''কিছু না করে তবে জিনিসগুলিকে স্ট্রিংয়ে রূপান্তর করতে ব্যবহার করা যেতে পারে।
শেফার্ড

এটি এর মতো Math.floorনয় তবে এখানে করা সঠিক জিনিস। এটি একটি অপারেটর তাই এটির চেয়ে দ্রুততর Math.floorকারণ কেবল যে কোনও সময় কোনও কোড চালাতে পারে Math.floor = someOtherFunctionএবং তারা '|' এর জন্য একই কাজ করতে পারে না। অন্যদিকে Math.floorএবং বনাম |বিভিন্ন চেষ্টা Math.floor(-1.5)বনাম -1.5 | 0। উপায় দ্বারা আপনার প্রথম বন্ধনী প্রয়োজন নেই। |একটি খুব কম নজির আছে।
gman

7

আপনি যদি এটি প্যাসকুলের সমাধানের মতো এক লাইনে লিখতে চান তবে অন্য একটি সমাধান হ'ল ES6 এর অনুসন্ধান ফাংশনটি ব্যবহার করে এটি লিখতে হবে (সত্যের উপর ভিত্তি করে, nআইটেমগুলির মধ্যে এলোমেলোভাবে একটি নির্বাচনের সম্ভাবনাটি হ'ল 1/n):

var item = ['A', 'B', 'C', 'D'].find((_, i, ar) => Math.random() < 1 / (ar.length - i));
console.log(item);

পরীক্ষার উদ্দেশ্যে সেই পদ্ধতির ব্যবহার করুন এবং যদি কোনও পৃথক ভেরিয়েবলের মধ্যে অ্যারেটি সংরক্ষণ না করার কোনও ভাল কারণ থাকে। অন্যথায় অন্যান্য উত্তর ( floor(random()*lengthএবং একটি পৃথক ফাংশন ব্যবহার করে) আপনার যাওয়ার উপায়।


খুব আসল সমাধান। দারূন কাজ! যাইহোক, এখানে একমাত্র আসল এবং গতিশীল ওয়ান-লাইনারের সমাধান।
স্লাভিক মেল্টসার

7

Faker.js এর এলোমেলো পরীক্ষার ডেটা উত্পন্ন করার জন্য অনেকগুলি ইউটিলিটি ফাংশন রয়েছে। এটি একটি পরীক্ষার স্যুট প্রসঙ্গে একটি ভাল বিকল্প:

const Faker = require('faker');
Faker.random.arrayElement(['January', 'February', 'March']);

মন্তব্যকারীরা যেমন উল্লেখ করেছেন, আপনার সাধারণত এই লাইব্রেরিটি উত্পাদন কোডে ব্যবহার করা উচিত নয়।


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

1
"সাধারণ সমস্যা" এর মতো সাধারণত গ্রন্থাগারগুলি সমাধান করে যা শত শত ব্যক্তির ইতিমধ্যে যে সমস্যার মুখোমুখি হয়েছিল তার সরল সমাধান সরবরাহ করে। এই লাইব্রেরিগুলি সাধারণত মজবুত এবং ভালভাবে ডিবাগ হয় এবং বিভিন্ন ক্যাভেটগুলির সাথে ডিল করে যা আমরা পুনরায় প্রয়োগ করতে চাই না। এটি সাধারণত এমন পরিস্থিতি হবে যেখানে আমি একটি লাইব্রেরি ব্যবহার করার পরামর্শ দেব।
smonff

লাইব্রেরি থেকে আপনার কেবল সেই একটি পদ্ধতি অনুলিপি করা উচিত এবং এটি একটি ইউটিউস ফাইলে রাখা উচিত
রিক ব্রস

লাইব্রেরিগুলি যখন ওয়েব ব্রাউজারে পাঠানো হয় তখন ডাব্লুআরটি পৃষ্ঠার ওজনের জন্য মূল্য / বেনিফিট মূল্যায়ন করার পরামর্শটি যথাযথ পরামর্শ এবং আমি আন্তরিকভাবে সম্মতি জানাই যে একটি ব্রাউজারে ফেকার.জেসগুলি প্রেরণ করা হাস্যকর হবে। তবে, কোন জেএস রানটাইম ব্যবহৃত হচ্ছে তা প্রশ্নের উল্লেখ করা হয়নি। নোডজেএস-ভিত্তিক রানটাইমের ভারী নির্ভরতা পুরোপুরি যুক্তিসঙ্গত যা আমি যেখানে Faker.js ব্যবহার করছি তার ক্ষেত্রে - শসা জেএস পরীক্ষার স্যুটগুলিতে।
নাথান

6

অ্যারে প্রোটোটাইপ সম্পাদনা করা ক্ষতিকারক হতে পারে। এখানে কাজটি করা একটি সাধারণ কাজ।

function getArrayRandomElement (arr) {
  if (arr && arr.length) {
    return arr[Math.floor(Math.random() * arr.length)];
  }
  // The undefined will be returned if the empty array was passed
}

ব্যবহার:

// Example 1
var item = getArrayRandomElement(['January', 'February', 'March']);

// Example 2
var myArray = ['January', 'February', 'March'];
var item = getArrayRandomElement(myArray);

3

পুনরাবৃত্তিমূলক, স্বতন্ত্র ফাংশন যা কোনও সংখ্যক আইটেম ফিরিয়ে দিতে পারে ( লড্যাশ.স্যাম্পল সাইজের অনুরূপ ):

function getRandomElementsFromArray(array, numberOfRandomElementsToExtract = 1) {
    const elements = [];

    function getRandomElement(arr) {
        if (elements.length < numberOfRandomElementsToExtract) {
            const index = Math.floor(Math.random() * arr.length)
            const element = arr.splice(index, 1)[0];

            elements.push(element)

            return getRandomElement(arr)
        } else {
            return elements
        }
    }

    return getRandomElement([...array])
}

2

পেতে ছদ্ম-শক্তিশালী র্যান্ডম আইটেম ফর্ম অ্যারে ব্যবহার

let rndItem = a=> a[rnd()*a.length|0];
let rnd = ()=> crypto.getRandomValues(new Uint32Array(1))[0]/2**32;

var myArray = ['January', 'February', 'March'];

console.log( rndItem(myArray) )


1

এটি @ জ্যাকব রিলকিনের সমাধানের মতো তবে এর চেয়ে সাধারণ:

এটি ES2015:

const randomChoice = arr => {
    const randIndex = Math.floor(Math.random() * arr.length);
    return arr[randIndex];
};

কোড 0 এবং অ্যারের দৈর্ঘ্যের মধ্যে একটি এলোমেলো সংখ্যা নির্বাচন করে কাজ করে, তারপরে সেই সূচীতে আইটেমটি ফিরিয়ে আনবে।


1

var item = myArray[Math.floor(Math.random()*myArray.length)];

বা সমান সংক্ষিপ্ত সংস্করণ:

var item = myArray[(Math.random()*myArray.length)|0];

কোডের উদাহরণ:

var myArray = ['January', 'February', 'March'];    
var item = myArray[(Math.random()*myArray.length)|0];
console.log('item:', item);


1

সাধারণ কাজ:

var myArray = ['January', 'February', 'March'];
function random(array) {
     return array[Math.floor(Math.random() * array.length)]
}
random(myArray);

অথবা

var myArray = ['January', 'February', 'March'];
function random() {
     return myArray[Math.floor(Math.random() * myArray.length)]
}
random();

অথবা

var myArray = ['January', 'February', 'March'];
function random() {
     return myArray[Math.floor(Math.random() * myArray.length)]
}
random();

গ্লোবাল নেমস্পেসকে দূষিত না করার জন্য আপনার ফাংশনের ভিতরে মাইআরএর ভেরিয়েবল সেট করা ভাল।
নিল মায়ার

0

আমার মতে, প্রোটোটাইপগুলির সাথে ঘোরাঘুরি বা ঠিক সময়ে এটি ঘোষণার চেয়ে ভাল, আমি এটি উইন্ডোতে প্রকাশ করা পছন্দ করি:

window.choice = function() {
  if (!this.length || this.length == 0) return;
  if (this.length == 1) return this[0];
  return this[Math.floor(Math.random()*this.length)];
}

এখন আপনার অ্যাপের যেকোন জায়গায় আপনি এটিকে কল করুন:

var rand = window.choice.call(array)

এইভাবে আপনি এখনও for(x in array)লুপটি সঠিকভাবে ব্যবহার করতে পারেন


1
যখন কেউ এটিকে হ্রাস করেছিল আমি এখানে ছিলাম না, এবং আমি এটিকে নিম্নোক্ত করি নি, তবে আমার অনুমান যে এটি উইন্ডোতে প্রকাশ করা মূলত একটি বিশ্বব্যাপী পরিবর্তনশীল হিসাবে ঘোষণা করে। দেখুন: স্ট্যাকওভারফ্লো.com
ক্রিস

1
আপনার কখনও for...inঅ্যারে বা এমনকি সাধারণভাবে ব্যবহার করা উচিত নয় । আপনি প্রোটোটাইপ চেইন হাঁটার ঝুঁকি চালান। এটি কোনও বস্তুর সমস্ত বৈশিষ্ট্যের জন্যও বোঝানো হয়, অ্যারেতে সমস্ত সূচক নয়। আপনি যদি অ্যারেতে একটি পুনরুক্তি ব্যবহার করতে চান তবে ব্যবহার করুন for (var i = 0; i < foo.length; i++){}। আরও ভাল, Array.prototype.forEachপরিবর্তে এর মতো কিছু ব্যবহার করুন।
রবার্ট

1
আমি এটি পছন্দ করি না কারণ এটি বৈশ্বিক সুযোগকে দূষিত করে। আপনি বলতে পারেন যে কেবল সেখানে থাকতে পারে তবে এটি সেই ভাল অনুশীলন লঙ্ঘনের অভ্যাস দেবে।
জেক্ক

0

আমি উপরের উত্তরের জটিলতার চারপাশে একটি উপায় খুঁজে পেয়েছি, কেবল ভেরিয়েবলটিকে অন্য ভেরিয়েবলের সাথে একত্রিত করে যে নম্বরটি মাইআরাইয়ের কলিংয়ের ভিতরে প্রদর্শিত হতে পারে [];। তৈরি হওয়া নতুন অ্যারে মুছে ফেলা এবং এর জটিলতাগুলির সাথে মিল রেখে, আমি একটি কার্যকরী সমাধান নিয়ে এসেছি:

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>

var myArray = ['January', 'February', 'March', 'April', 'May'];    

var rand = Math.floor(Math.random() * myArray.length);

var concat = myArray[rand];

function random() {
   document.getElementById("demo").innerHTML = (concat);
}
</script>

<button onClick="random();">
Working Random Array generator
</button>

</body>
</html>

আমি কেন concatrandom
বিস্মিত হই যে

1
এই সমাধানটি পুরোপুরি অর্থবোধ করে না। আপনি কনক্যাট নামক একটি পরিবর্তনশীল কেন তৈরি করছেন?
সুপারলুমিনারি

0

static generateMonth() { 
const theDate = ['January', 'February', 'March']; 
const randomNumber = Math.floor(Math.random()*3);
return theDate[randomNumber];
};

আপনি অ্যারেতে একটি ধ্রুবক পরিবর্তনশীল সেট করেন, তারপরে আপনার আর একটি ধ্রুবক থাকে যা অ্যারের তিনটি বস্তুর মধ্যে এলোমেলোভাবে চয়ন করে এবং তারপরে ফাংশনটি কেবল ফলাফলগুলি দেয়।


-1

এলোমেলো উপাদান (গুলি) পাওয়ার সাধারণ উপায়:

let some_array = ['Jan', 'Feb', 'Mar', 'Apr', 'May'];
let months = random_elems(some_array, 3);

console.log(months);

function random_elems(arr, count) {
  let len = arr.length;
  let lookup = {};
  let tmp = [];

  if (count > len)
    count = len;

  for (let i = 0; i < count; i++) {
    let index;
    do {
      index = ~~(Math.random() * len);
    } while (index in lookup);
    lookup[index] = null;
    tmp.push(arr[index]);
  }

  return tmp;
}


-1

র্যান্ডোজগুলি এটিকে আরও কিছুটা সহজ এবং পঠনযোগ্য করে তোলে:

console.log( rando(['January', 'February', 'March']).value );
<script src="https://randojs.com/1.0.0.js"></script>


1
শুধু কৌতূহলী: কেন ডাউনটি?
লেপোনজো

1
কিছু লোক কোডের জন্য লাইব্রেরিতে স্যসিংয়ের অনুরাগী নন যে তারা নিজেরাই লিখতে পারত, এমনকি এটি জিনিসগুলিকে দ্রুত এবং আরও পাঠযোগ্য করে তোলা যায়। যদি কোনও কারণে লাইব্রেরিটি নিচে চলে যায় তবে আপনার ওয়েবসাইটে এখন কোনও ত্রুটি রয়েছে। রেন্ডোজগুলি নীচে যায় না, তবে তারা এটি জানে না কারণ এটি jQuery এর মতো লাইব্রেরি হিসাবে খুব বেশি পরিচিত না
অ্যারোন প্লোচার্জেক

-2

এটি কীভাবে করা যায় তার একটি উদাহরণ এখানে দেওয়া হয়েছে:

$scope.ctx.skills = data.result.skills;
    $scope.praiseTextArray = [
    "Hooray",
    "You\'re ready to move to a new skill", 
    "Yahoo! You completed a problem", 
    "You\'re doing great",  
    "You succeeded", 
    "That was a brave effort trying new problems", 
    "Your brain was working hard",
    "All your hard work is paying off",
    "Very nice job!, Let\'s see what you can do next",
    "Well done",
    "That was excellent work",
    "Awesome job",
    "You must feel good about doing such a great job",
    "Right on",
    "Great thinking",
    "Wonderful work",
    "You were right on top of that one",
    "Beautiful job",
    "Way to go",
    "Sensational effort"
  ];

  $scope.praiseTextWord = $scope.praiseTextArray[Math.floor(Math.random()*$scope.praiseTextArray.length)];


-3

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

নিম্নলিখিত কোড চেষ্টা করুন ..

//For Search textbox random value
var myPlaceHolderArray = ['Hotels in New York...', 'Hotels in San Francisco...', 'Hotels Near Disney World...', 'Hotels in Atlanta...'];
var rand = Math.floor(Math.random() * myPlaceHolderArray.length);
var Placeholdervalue = myPlaceHolderArray[rand];

alert(Placeholdervalue);

5
এই উত্তরটি ইতিমধ্যে গৃহীত উত্তরের মতো একই সমাধান ব্যবহার করে। আপনার একই সমাধান দু'বার যুক্ত করা থেকে বিরত থাকা উচিত এবং পরিবর্তে কেবলমাত্র সম্ভাব্য অন্যান্য বিকল্পগুলি নিয়ে আসা উচিত যা কথোপকথনে আরও অবদান রাখবে।
পিক্সক্স্ল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.