<prompt> Kwa kuzingatia mkusanyiko kamili nums unaowezekana nakala, toa kwa nasibu faharasa ya nambari lengo fulani. Unaweza kudhani kuwa nambari inayolengwa lazima iwepo katika safu.Tekeleza darasa la Suluhisho: Solutionint nums Huanzisha kitu kwa mkusanyiko nums. int pickint target Huchagua faharasa nasibu i kutoka nums ambapo numsi target. Ikiwa kuna i nyingi halali, basi kila faharasa inapaswa kuwa na uwezekano sawa wa kurejea.Mfano wa 1:Ingizo Suluhisho , chagua, chagua, chagua1, 2, 3, 3, 3, 1, 3Patonull, 4, 0, 2UfafanuziSuluhisho la suluhisho Suluhisho jipya 1, 2, 3, 3, 3;suluhisho.chagua3; Inapaswa kurudisha ama index 2, 3, au 4 nasibu. Kila faharasa inapaswa kuwa na uwezekano sawa wa kurudi.suluhisho.chagua1; Inapaswa kurudi 0. Kwa kuwa katika safu ni nums0 pekee ni sawa na 1.suluhisho.chagua3; Inapaswa kurudisha ama index 2, 3, au 4 nasibu. Kila faharasa inapaswa kuwa na uwezekano sawa wa kurudi.Vikwazo: 1 nums.length 2 104 -231 numsi 231 - 1 lengwa ni nambari kamili kutoka nums. Angalau zaidi simu 104 zitapigiwa kuchagua.  <response>: chatukuagiza bila mpangilioSuluhisho la darasa: def __init__binafsi, nambari: self.nums hesabu def pickbinafsi, lengo: hesabu, res 0, 0 kwa i, num in enumerateself.nums: ikiwa nambari lengo: hesabu 1 ikiwa nasibu.randint0, hesabu - 1 0: res i kurudi resmaelezoAlgorithm inarudia kupitia safu ya ingizo na wakati wowote inapopata kipengee lengwa, huongeza kigezo cha hesabu. Kisha hutengeneza nambari nasibu katika safu 0, count - 1. Ikiwa nambari ya nasibu ni 0, weka matokeo kwa faharasa ya sasa. Kwa kuwa kitendakazi cha jenereta nasibu kinaweza kutoa 0 mara nyingi wakati wa kurudia, hii inahakikisha kuwa matokeo ya mwisho yamechaguliwa kwa nasibu kati ya matukio yote ya lengo.Mwishoni mwa kitanzi, tofauti res ina faharasa iliyochaguliwa nasibu ya thamani lengwa. Utata wa wakati wa algorithm hii ni On na uchangamano wa nafasi ni O1. 