C# Implementasi metode ekstensi untuk tipe data BigInteger. Seperti mengekstraksi akar ke -n, menghasilkan nilai acak dan eksponensial. Oleh Nikolai Thesquid.
Saya akan dengan senang hati menggabungkan permintaan tarikan Anda untuk meningkatkan kinerja perhitungan. Bahkan jika peningkatan hanya mempengaruhi kasus individu dari kisaran nilai.
Untuk menggunakan ekstensi ini, Anda perlu menambahkan ke kode Anda berikut ruang nama: System.Numerics dan TheSquid.Numerics.Extensions .
C# Implementasi metode ekstensi untuk dengan cepat menghitung root ke -n (termasuk root kuadrat) untuk nilai biginteger.
Pada dasarnya Anda dapat menyalin kelas nThrootextension dari repositori sumber ke proyek Anda. Opsi lain adalah menambahkan paket taduid.numerics.Extensions dari repositori Nuget ke dependensi proyek Anda.
Contoh Penggunaan:
var source = BigInteger . Parse ( Console . ReadLine ( ) ) ;
var exponent = int . Parse ( Console . ReadLine ( ) ) ;
var root = source . NthRoot ( exponent , out var isExactResult ) ;Anda dapat memulai tes nthroot acak tepat setelah repositori klon dan membangun solusi. Anda harus menjalankan tes menghasilkan dan membangun kembali solusi sebelum mulai kecepatan uji root ke -n.
Metode ekstensi menggunakan dua algoritma perhitungan root: metode Newton yang terkenal dan metode digit-demi-digit. Ketika tingkat akar meningkat, perhitungan dengan metode Newton melambat, dan metode digit-demi-digit berakselerasi. Dengan urutan nilai root dan urutan 100.000 digit desimal, ketergantungan kecepatan perhitungan pada tingkat akar adalah sebagai berikut:

C# Implementasi metode ekstensi untuk menghasilkan nilai biginteger acak dalam kisaran yang ditentukan.
Pada dasarnya Anda dapat menyalin kelas nextBigIntegerextension dari Source Repository ke proyek Anda. Opsi lain adalah menambahkan paket taduid.numerics.Extensions dari repositori Nuget ke dependensi proyek Anda.
Contoh Penggunaan:
var min = BigInteger . Parse ( Console . ReadLine ( ) ) ;
var max = BigInteger . Parse ( Console . ReadLine ( ) ) ;
var random = new Random ( DateTime . Now . Millisecond ) . NextBigInteger ( min , max ) ;Anda dapat memulai tes acak untuk Metode Extension NextBigInteger menggunakan kelas NextBigIntegerextensionTests dari Project thesquid.numerics.Extensions.
Metode ekstensi untuk kelas sistem acak. Metode menggunakan contoh kelas acak untuk menghasilkan array byte acak.
C# Implementasi metode ekstensi untuk perhitungan kekuatan yang lebih cepat dengan parameter berulang menggunakan cache.
Pada dasarnya Anda dapat menyalin kelas PowCachedExtension dari Source Repository ke proyek Anda. Opsi lain adalah menambahkan paket taduid.numerics.Extensions dari repositori Nuget ke dependensi proyek Anda.
Contoh Penggunaan:
var source = BigInteger . Parse ( Console . ReadLine ( ) ) ;
var exponent = int . Parse ( Console . ReadLine ( ) ) ;
var power = source . PowCached ( exponent ) ; POW Cache menghapus dirinya secara otomatis. Pertama, jika keluar dari kesalahan memori terjadi saat menghitung daya. Maka cache akan dihapus sepenuhnya. Kedua, jika jumlah elemen dalam cache mencapai jumlah int.MaxValue . Maka cache akan dibersihkan setengahnya. Selain itu, Anda dapat memeriksa jumlah elemen dalam cache dan menghapus secara manual, meninggalkan sejumlah elemen yang ditentukan.
Contoh Penggunaan:
var available = PowCachedExtension . ItemsInCache ;
var threshold = long . Parse ( Console . ReadLine ( ) ) ;
if ( threshold < available ) PowCachedExtension . ShrinkCacheData ( threshold ) ;Anda dapat memulai tes acak untuk metode ekstensi powcached menggunakan kelas PowCachedExtensionTests dari Project thesquid.numerics.Extensions.Tes tepat setelah repositori klon dan solusi membangun.
Akselerasi dicapai dengan menghafal hasil tingkat komputasi, serta menghafal hasil perantara yang diperoleh dalam kemajuan perhitungan. Dengan nilai basement acak dalam kisaran dari 0 hingga 1000, nilai eksponen acak dalam kisaran dari 0 hingga 1000 dan iterasi dihitung hingga 2000000, ketergantungan kecepatan perhitungan pada pengisian cache adalah sebagai berikut:
