Ansi C: كيفية تقسيم سلسلة بواسطة Newline واحصل على خط عشوائي

StackOverflow https://stackoverflow.com/questions/2217641

  •  19-09-2019
  •  | 
  •  

سؤال

أنا جديد على ج وحصلت مع SUBJ. يمكنني تقسيم سلسلة مع strtok لكنني لا أعرف كيفية الحصول على رمز عشوائي.

شكرًا.

هل كانت مفيدة؟

المحلول

يمكنك تحليلها مرتين، ثم احصل على عدد عشوائي واختيار واحدة، والتي تجمعها في الأزمة الثانية لنفس السلسلة.

أو، يمكنك أن تفعل ذلك في تمريرة واحدة إذا كنت تستخدم أخذ العينات الخزان.

ستكون إتقان أخذ العينات الخزان وسيلة مفيدة للغاية للتعلم ج كجانب لتعلم بعض الرياضيات! :)

نصائح أخرى

يوضح الكود الكفاءة التالية كيفية إرجاع المرشح الذي تم اختياره بشكل موحد بين الرموز في السلسلة:

نتيجة السلسلة = null؛ الرموز الدولية = 0؛ بينما (صحيح) {سلسلة المرشح = الرمز المميز التالي؛ إذا كان (المرشح غير موجود) كسر؛ الرموز = الرموز + 1؛ إذا ((عدد صحيح عشوائي محدد بين 0 و Tokens-1) == 0) النتيجة = الرمز المميز؛ } عودة النتيجة؛

هذه حالة خاصة خوارزمية ر من القسم 3.4.2 من المجلد الثاني من كيلوث فن برمجة الكمبيوتر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top