Ansi C: كيفية تقسيم سلسلة بواسطة Newline واحصل على خط عشوائي
سؤال
أنا جديد على ج وحصلت مع SUBJ. يمكنني تقسيم سلسلة مع strtok
لكنني لا أعرف كيفية الحصول على رمز عشوائي.
شكرًا.
المحلول
يمكنك تحليلها مرتين، ثم احصل على عدد عشوائي واختيار واحدة، والتي تجمعها في الأزمة الثانية لنفس السلسلة.
أو، يمكنك أن تفعل ذلك في تمريرة واحدة إذا كنت تستخدم أخذ العينات الخزان.
ستكون إتقان أخذ العينات الخزان وسيلة مفيدة للغاية للتعلم ج كجانب لتعلم بعض الرياضيات! :)
نصائح أخرى
يوضح الكود الكفاءة التالية كيفية إرجاع المرشح الذي تم اختياره بشكل موحد بين الرموز في السلسلة:
نتيجة السلسلة = null؛ الرموز الدولية = 0؛ بينما (صحيح) {سلسلة المرشح = الرمز المميز التالي؛ إذا كان (المرشح غير موجود) كسر؛ الرموز = الرموز + 1؛ إذا ((عدد صحيح عشوائي محدد بين 0 و Tokens-1) == 0) النتيجة = الرمز المميز؛ } عودة النتيجة؛
هذه حالة خاصة خوارزمية ر من القسم 3.4.2 من المجلد الثاني من كيلوث فن برمجة الكمبيوتر.
لا تنتمي إلى StackOverflow