this प्रश्न के बाद, मुझे फ़ाइल के यादृच्छिक रूप से n
लाइनों को ठीक से प्राप्त करने की आवश्यकता है (या stdin
)। यह head
या tail
के समान होगा, सिवाय इसके कि मैं कुछ मध्य से चाहता हूं।पर्ल के साथ फाइल से मुझे बिल्कुल यादृच्छिक रेखाएं कैसे मिल सकती हैं?
अब, लिंक किए गए प्रश्न के समाधान के साथ फ़ाइल पर लूप करने के अलावा, एक रन में n
लाइनों को पाने का सबसे अच्छा तरीका क्या है?
संदर्भ के लिए, मैंने कोशिश की यह:
#!/usr/bin/perl -w
use strict;
my $ratio = shift;
print $ratio, "\n";
while() {
print if ((int rand $ratio) == 1);
}
जहां $ratio
लाइनों मैं चाहता हूँ के किसी न किसी प्रतिशत है।
aaa> foreach i (0 1 2 3 4 5 6 7 8 9)
foreach? random_select 10 a.list | wc -l
foreach? end
4739
4865
4739
4889
4934
4809
4712
4842
4814
4817
अन्य विचार मैं था इनपुट फ़ाइल slurping गया था और तब चुनने:
random_select 10 a.list
बहरहाल, यह मुझे एक सटीक राशि नहीं दे करता है: उदाहरण के लिए, अगर मैं 10 में 1 लाइनों चाहते हैं n
सरणी से यादृच्छिक रूप से, लेकिन यह एक समस्या है यदि मेरे पास वास्तव में बड़ी फ़ाइल है।
कोई भी विचार?
संपादित करें: यह this प्रश्न का एक सटीक डुप्लिकेट है।
इस http://stackoverflow.com/questions/692312/randomly-pick-lines-from-a-file-without-slurping-it-with-unix –
की एक सटीक डुप्लिकेट नहीं है यह हाँ है। माफ़ कीजिये। मैं दोनों को जोड़ूंगा और इसे बंद करने के लिए वोट दूंगा। –
नहीं, नमूना के लिए अन्य प्रश्नों को बंद करने की अनुमति है - यह एक सटीक संख्या चाहता है। – Alnitak