用c++写一个opencv使用用svm 训练中文

时间: 2023-05-25 07:01:44 浏览: 32
抱歉,我不会编写代码,无法为您提供完整的代码示例。但是,我可以简要介绍使用OpenCV和SVM进行中文文本分类的一般步骤: 1. 收集中文文本数据集,并将其转换为数字表示(例如,使用tf-idf向量)。 2. 使用OpenCV加载数据集,并执行必要的图像处理操作(例如,灰度化、二值化等)。 3. 使用SVM算法对数据集进行训练,并确定哪些特征对分类任务最为有用。 4. 使用训练好的SVM模型对新的中文文本进行分类。 需要注意的是,中文文本分类与英文文本分类略有不同,因为中文文本通常包含大量的多音字和歧义。因此,在构建模型时,需要特别注意词汇和特征的选择。
相关问题

如何用c++写一个opencv使用用svm 训练中文

很抱歉,我不会编程,但是我可以向您提供一些参考资料。 要在C语言中使用OpenCV进行SVM训练,您需要了解以下内容: 1. C语言基础 2. OpenCV中的SVM分类器 3. 中文文本向量化方法,如词袋模型和TF-IDF 以下是一个简单的示例,展示如何使用OpenCV中的SVM分类器在中文数据集上进行训练和分类。 ``` #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { // 加载中文文本数据集 Mat trainingData = loadTrainingData(); // 为SVM分类器设置参数 CvSVMParams params; params.svm_type = CvSVM::C_SVC; params.kernel_type = CvSVM::LINEAR; params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, 100, 1e-6); // 训练SVM模型 CvSVM svm; svm.train_auto(trainingData, Mat(), Mat(), Mat(), params, 10); // 加载测试数据 Mat testData = loadTestData(); // 对测试数据进行分类 Mat results; svm.predict(testData, results); // 将结果输出到控制台 cout << results << endl; return 0; } // 加载中文文本数据集 Mat loadTrainingData() { // 将中文文本向量化为词袋模型或TF-IDF向量 Mat trainingData = vectorizeTextData(); return trainingData; } // 加载中文测试数据集 Mat loadTestData() { // 将中文文本向量化为词袋模型或TF-IDF向量 Mat testData = vectorizeTextData(); return testData; } // 将中文文本向量化为词袋模型或TF-IDF向量 Mat vectorizeTextData() { // 使用词袋模型或TF-IDF将中文文本向量化 return vectorizedData; } ``` 请注意,这只是一个简单的示例,实际上实现一个有效的中文文本分类器需要使用更复杂的技术和算法。建议您先了解OpenCV中的SVM分类器和中文文本向量化方法,然后再着手编写代码。

请使用C++17 opencv4.6 基于训练好的SVM模型做图片行人检测

以下是基于训练好的SVM模型进行图片行人检测的示例代码: ```c++ #include <opencv2/opencv.hpp> using namespace cv; int main() { // 加载训练好的SVM模型 Ptr<ml::SVM> svm = ml::SVM::load("svm_model.xml"); // 读取测试图片 Mat img = imread("test.jpg"); // 图片预处理 Mat gray_img; cvtColor(img, gray_img, COLOR_BGR2GRAY); equalizeHist(gray_img, gray_img); // 行人检测 HOGDescriptor hog; hog.setSVMDetector(svm->getDecisionFunction(0)); std::vector<Rect> found; hog.detectMultiScale(gray_img, found, 0, Size(8, 8), Size(32, 32), 1.05, 2); // 绘制检测结果 for (const auto& rect : found) { rectangle(img, rect, Scalar(0, 255, 0), 2); } // 显示检测结果 imshow("Pedestrian Detection", img); waitKey(0); return 0; } ``` 说明: 1. 首先,我们需要使用 `ml::SVM::load` 函数加载训练好的SVM模型。这里假设模型保存在名为 `svm_model.xml` 的文件中。 2. 接着,我们读取测试图片,并对其进行预处理。这里使用了灰度化和直方图均衡化等操作。 3. 然后,我们使用 `HOGDescriptor` 类来进行行人检测。首先,我们需要使用 `setSVMDetector` 函数设置SVM分类器的决策函数。这里,我们直接从SVM模型中获取第一个决策函数,并将其传递给 `setSVMDetector` 函数。接着,我们使用 `detectMultiScale` 函数来进行多尺度检测,得到检测结果,保存在 `found` 变量中。 4. 最后,我们遍历 `found` 变量,并使用 `rectangle` 函数绘制检测结果。然后,我们将结果显示出来,并等待用户按下任意键退出。 需要注意的是,如果训练SVM模型时使用的是HOG特征,那么在进行行人检测时也需要使用HOGDescriptor类。如果使用的是其他特征,比如Haar特征或LBP特征,那么在进行行人检测时就需要使用对应的检测器。

相关推荐

图像分类是机器学习中的一个重要问题,它需要大量的数据和计算资源。C语言本身不支持图像处理,因此如果要用C语言实现图像分类器,需要使用一些图像处理库。 以下是一个使用OpenCV库实现的图像分类器的示例代码: #include <opencv2/opencv.hpp> #include <opencv2/dnn.hpp> #include <opencv2/imgproc.hpp> #include <opencv2/highgui.hpp> #include <iostream> using namespace cv; using namespace cv::dnn; using namespace std; int main(int argc, char** argv) { String model_weights = "resnet50_weights_tf_dim_ordering_tf_kernels.h5"; String model_architecture = "resnet50_architecture.json"; Net net = readNetFromTensorflow(model_weights, model_architecture); String image_file = "dog.jpg"; Mat image = imread(image_file); Size size(224,224); Mat blob = blobFromImage(image, 1.0, size, Scalar(104, 117, 123)); net.setInput(blob); Mat prob = net.forward(); Point classIdPoint; double confidence; minMaxLoc(prob.reshape(1, 1), 0, &confidence, 0, &classIdPoint); int classId = classIdPoint.x; vector<String> classes; ifstream class_file("imagenet_classes.txt"); if (class_file.is_open()) { string class_name; while (std::getline(class_file, class_name)) { classes.push_back(class_name); } } cout << "Best class: " << classes[classId] << endl; cout << "Confidence: " << confidence * 100 << "%" << endl; return 0; } 上述代码使用OpenCV和TensorFlow来实现图像分类。首先加载模型,然后读取要分类的图像,将其转换为4维Blob,并将其作为网络的
车牌识别是计算机视觉领域的一个重要应用,其中SVM是一种常用的分类算法。下面是一个使用OpenCV和SVM进行车牌识别的C++代码示例: c++ #include <opencv2/opencv.hpp> #include <iostream> using namespace std; using namespace cv; int main() { // 加载SVM模型 Ptr<ml::SVM> svm = ml::SVM::load("svm.xml"); // 读取图片 Mat img = imread("car_plate.jpg"); // 图像预处理 Mat gray, binary; cvtColor(img, gray, COLOR_BGR2GRAY); threshold(gray, binary, 0, 255, THRESH_BINARY_INV | THRESH_OTSU); // 轮廓检测 vector<vector> contours; findContours(binary, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE); // 筛选车牌轮廓 Rect plateRect; for (int i = 0; i < contours.size(); i++) { Rect rect = boundingRect(contours[i]); double whRatio = static_cast<double>(rect.width) / rect.height; if (whRatio > 2 && whRatio < 5 && rect.width > 100 && rect.height > 30) { plateRect = rect; break; } } // 提取车牌图像 Mat plateImg = binary(plateRect); // 调整车牌大小 resize(plateImg, plateImg, Size(136, 36)); // 特征提取 Mat feature = plateImg.reshape(1, 1); feature.convertTo(feature, CV_32F); // SVM分类 int result = static_cast<int>(svm->predict(feature)); // 输出识别结果 cout << "车牌识别结果:" << result << endl; return 0; } 其中,svm.xml是训练好的SVM模型文件,车牌图像car_plate.jpg应该和代码文件放在同一目录下。代码中使用了OpenCV的图像处理函数和机器学习模块,通过预处理、轮廓检测、特征提取和SVM分类等步骤实现车牌识别。
### 回答1: OpenCV是一个开源的计算机视觉库,可以用于图像处理、机器视觉和模式识别等领域。对于手写字体识别问题,可以使用OpenCV进行处理和实现。 首先,我们需要准备手写字体的训练数据集。可以通过手写数字的图片进行实验。在数据集中,每个手写数字都有一个对应的标签,例如0-9的数字。 然后,我们需要将训练数据集加载到OpenCV中,并进行图像的预处理。这包括对图像进行灰度化处理、二值化处理和大小归一化等。灰度化和二值化可以帮助我们提取图像中的字体信息,而大小归一化可以确保不同大小的字体在处理过程中具有相同的特征。 接下来,我们可以利用OpenCV中的机器学习算法,例如支持向量机(SVM)或k最近邻(KNN)等,对预处理后的图像进行训练和分类。在训练过程中,算法会学习不同字体的特征,并建立一个模型用于分类。 最后,我们可以使用训练好的模型对新的手写字体进行识别。通过对输入图像进行与训练过程相同的预处理,并将预处理后的图像输入到已训练的模型中,即可得到预测的结果。 需要注意的是,手写字体识别是一个复杂的问题,准确率可能会受到多种因素的影响,例如图像的质量、字体的风格和手写习惯等。因此,在实际应用中,可能需要进行进一步的优化和调整,以提高识别的准确率。 ### 回答2: 手写字体识别是一项利用opencv图像处理库的技术,用于识别手写的文字。通过对手写字体图片进行图像处理和特征提取,然后使用机器学习算法进行训练和识别,最终实现对手写字体的自动识别。 首先,需要收集大量的手写字体图片作为训练数据。这些数据应包含不同人的手写字体,不同书写风格和字体样式的文字。 其次,对收集到的手写字体图片进行图像处理。这包括图像去噪、二值化、轮廓提取等步骤。通过这些处理,可以对图片进行预处理,以便后续特征提取和识别。 然后,使用opencv提供的功能和算法对手写字体图片进行特征提取。这些特征可以包括笔画数、笔画方向、每个笔画的起止位置和角度等等。通过提取这些特征,可以将手写字体转化为数字化的数据。 最后,使用机器学习算法对提取到的特征进行训练和识别。常用的机器学习算法包括支持向量机(SVM)、神经网络(NN)和随机森林(Random Forest)等。通过对训练数据进行学习,模型可以准确地识别并分类手写字体。 总的来说,opencv手写字体识别是利用图像处理和机器学习相结合的方法,通过对手写字体图片进行处理、特征提取和机器学习训练,实现对手写文字的自动识别。这项技术在文本识别、银行支票识别和手写数字识别等领域有着广泛的应用。
### 回答1: 好的,以下是一段使用C++和OpenCV库实现目标追踪的代码示例: #include <opencv2/opencv.hpp> using namespace cv; int main(int argc, char** argv) { // 打开视频文件 VideoCapture cap("video.mp4"); if (!cap.isOpened()) { return -1; } // 读取第一帧图像 Mat frame; cap.read(frame); // 选择追踪目标区域 Rect2d roi = selectROI(frame); // 初始化追踪器 Ptr<Tracker> tracker = TrackerCSRT::create(); tracker->init(frame, roi); // 循环处理每一帧图像 while (cap.read(frame)) { // 使用追踪器跟踪目标区域 bool ok = tracker->update(frame, roi); // 绘制追踪框 if (ok) { rectangle(frame, roi, Scalar(0, 255, 0), 2); } else { putText(frame, "Tracking failure detected", Point(100, 80), FONT_HERSHEY_SIMPLEX, 0.75, Scalar(0,0,255),2); } // 显示图像 imshow("Frame", frame); // 按下ESC键退出循环 if (waitKey(1) == 27) { break; } } return 0; } 这段代码中,首先通过VideoCapture类打开一个视频文件,并读取第一帧图像。然后通过selectROI函数让用户选择需要追踪的目标区域。接着使用TrackerCSRT类创建一个跟踪器,并使用选定的目标区域初始化它。最后,通过循环处理每一帧图像,使用追踪器跟踪目标区域,并在图像上绘制追踪框来实现目标追踪。 ### 回答2: 目标追踪算法是计算机视觉领域中的一个重要应用,其中使用 OpenCV 库中的 C 编程语言来实现。下面是一个简单的示例算法,用于在视频中追踪一个特定的目标: 1. 导入必要的 OpenCV 库和头文件。 2. 加载视频文件,或者通过摄像头实时捕获视频流。 3. 选择一个目标物体,并且在第一帧中,使用鼠标点击来标识物体的初始位置。 4. 在视频的每一帧上执行以下步骤: a. 将当前帧转换为灰度图像。 b. 使用 OpenCV 提供的目标检测算法(如 Haar 级联分类器或 HOG+SVM),在当前帧中检测目标。 c. 根据检测到的目标位置,计算目标的中心点。 d. 通过跟踪目标的历史位置,预测当前帧中目标的位置。 e. 在当前帧中使用标记函数,标记目标的位置。 f. 更新目标的历史记录,以供下一帧使用。 5. 显示带有标记目标的当前帧。 6. 重复步骤 4 和 5 直到视频结束。 这只是一个简单的目标追踪算法示例,实际应用中可能需要更复杂的技术和算法。可以根据具体的需求,选择适当的目标检测和跟踪算法来实现更准确的追踪效果。同时,还可以通过参数调整、滤波器和自适应算法等技术来优化追踪效果。
这是一个简单的基于OpenCV的工业表面缺陷分类检测程序,它使用了SVM分类器来识别两种不同类型的缺陷:裂缝和凸起。 首先,我们需要导入必要的OpenCV库和头文件: c++ #include <opencv2/opencv.hpp> #include <opencv2/ml.hpp> using namespace cv; using namespace cv::ml; using namespace std; 然后,定义一些常量和变量: c++ const int IMAGE_WIDTH = 64; const int IMAGE_HEIGHT = 64; const int NUM_TRAINING_SAMPLES = 40; const int NUM_TESTING_SAMPLES = 10; const int NUM_FEATURES = IMAGE_WIDTH * IMAGE_HEIGHT; const int NUM_CLASSES = 2; const string TRAINING_DATA_PATH = "training_data/"; const string TESTING_DATA_PATH = "testing_data/"; const string SVM_MODEL_PATH = "svm_model.xml"; Mat trainingData; Mat trainingLabels; Mat testingData; Mat testingLabels; Ptr<SVM> svm; 接下来,我们定义一个函数,用于将图像转换为特征向量。 c++ Mat imageToFeatureVector(Mat image) { Mat grayImage; cvtColor(image, grayImage, COLOR_BGR2GRAY); resize(grayImage, grayImage, Size(IMAGE_WIDTH, IMAGE_HEIGHT)); Mat featureVector = grayImage.reshape(1, 1); return featureVector; } 然后,我们定义一个函数,用于加载训练和测试数据。 c++ void loadData() { for (int i = 1; i <= NUM_TRAINING_SAMPLES; i++) { string imagePath = TRAINING_DATA_PATH + "crack_" + to_string(i) + ".jpg"; Mat image = imread(imagePath); Mat featureVector = imageToFeatureVector(image); trainingData.push_back(featureVector); trainingLabels.push_back(0); } for (int i = 1; i <= NUM_TRAINING_SAMPLES; i++) { string imagePath = TRAINING_DATA_PATH + "bump_" + to_string(i) + ".jpg"; Mat image = imread(imagePath); Mat featureVector = imageToFeatureVector(image); trainingData.push_back(featureVector); trainingLabels.push_back(1); } for (int i = 1; i <= NUM_TESTING_SAMPLES; i++) { string imagePath = TESTING_DATA_PATH + "crack_" + to_string(i) + ".jpg"; Mat image = imread(imagePath); Mat featureVector = imageToFeatureVector(image); testingData.push_back(featureVector); testingLabels.push_back(0); } for (int i = 1; i <= NUM_TESTING_SAMPLES; i++) { string imagePath = TESTING_DATA_PATH + "bump_" + to_string(i) + ".jpg"; Mat image = imread(imagePath); Mat featureVector = imageToFeatureVector(image); testingData.push_back(featureVector); testingLabels.push_back(1); } } 然后,我们定义一个函数,用于训练SVM分类器。 c++ void trainSVM() { svm = SVM::create(); svm->setType(SVM::C_SVC); svm->setKernel(SVM::LINEAR); svm->setTermCriteria(TermCriteria(TermCriteria::MAX_ITER, 100, 1e-6)); Ptr<TrainData> trainData = TrainData::create(trainingData, ROW_SAMPLE, trainingLabels); svm->train(trainData); svm->save(SVM_MODEL_PATH); } 最后,我们定义一个函数,用于测试SVM分类器。 c++ void testSVM() { int numCorrect = 0; for (int i = 0; i < testingData.rows; i++) { Mat featureVector = testingData.row(i); int trueLabel = testingLabels.at<int>(i); int predictedLabel = svm->predict(featureVector); if (predictedLabel == trueLabel) { numCorrect++; } } float accuracy = (float)numCorrect / testingData.rows; cout << "Accuracy: " << accuracy << endl; } 现在,我们可以在main函数中调用这些函数来训练和测试SVM分类器。 c++ int main() { loadData(); trainSVM(); testSVM(); return 0; } 这是一个简单的工业表面缺陷分类检测程序,你可以使用更多的训练数据和更复杂的特征来提高分类器的准确性。
### 回答1: 要使用 C 和 OpenCV 写车牌识别,需要先安装 OpenCV 库。安装完成后,可以使用 OpenCV 提供的函数进行图像处理和特征提取。具体的步骤包括: 1. 读入图像:使用 OpenCV 的 imread() 函数读取图像数据。 2. 图像预处理:对图像进行灰度处理、降噪、二值化等处理,使得图像中的车牌更易于检测。 3. 车牌定位:使用 OpenCV 的模板匹配、Canny边缘检测等方法来定位车牌区域。 4. 字符分割:在定位到的车牌区域中,将车牌分割为单个字符。 5. 字符识别:对分割出的每个字符进行识别,识别可以使用机器学习算法如KNN,SVM,CNN等。 6. 输出识别结果:将识别出的车牌号码输出。 需要注意的是,车牌识别是一个非常复杂的问题,上述步骤中的每一步都可能需要经过大量调试和优化才能得到理想的结果。 ### 回答2: 使用c和OpenCV编写车牌识别可以通过以下步骤进行: 1. 导入OpenCV库和所需的其他库。 2. 读取图像:使用OpenCV的imread函数读取要识别的图像。 3. 图像预处理:首先,可以对图像进行灰度化处理,将彩色图像转换为灰度图像。然后,可以通过应用高斯模糊或其他滤波器来减少图像中的噪声。还可以使用阈值化方法对图像进行二值化处理,以便更好地区分车牌的区域。 4. 文本检测:可以使用OpenCV中的文本检测算法(例如,EAST算法)来检测图像中的文本区域。该算法可以帮助我们找到图像中可能包含车牌的区域。 5. 车牌区域提取:基于文本检测结果,可以根据车牌的特征(例如,颜色和形状)进一步提取可能的车牌区域。使用OpenCV的形态学操作和轮廓检测技术,可以提取出包含车牌的图像区域。 6. 字符分割:通过将车牌区域划分为多个字符区域,可以使用OpenCV的字符分割技术将车牌中的字符分离开来。 7. 字符识别:对于每个字符区域,可以使用OpenCV中的光学字符识别(OCR)技术,或者使用机器学习算法(如卷积神经网络)进行字符识别。 8. 结果显示:最后,可以在原始图像上绘制车牌区域和识别的字符,并将结果显示出来。 通过以上步骤,就可以使用c和OpenCV编写一个简单的车牌识别系统。这只是一个基本的思路,具体的实现可能会涉及更多的细节和算法。

最新推荐

Scratch 经典游戏:1943-中途岛战役

方向键-移动,空格-射击。 此后仍有作品或有趣游戏、爆笑作品,请关注原作者,且点赞加收藏,记得推荐好友。下载即可游玩,快来下载吧!五星好评可以私信我,免费送资源!快来评论吧!

3D打印行业研究:“为什么”转向“如何”之成本端的思考.docx

3D打印行业研究:“为什么”转向“如何”之成本端的思考.docx

基于HTML5的移动互联网应用发展趋势.pptx

基于HTML5的移动互联网应用发展趋势.pptx

混合神经编码调制的设计和训练方法

可在www.sciencedirect.com在线获取ScienceDirectICTExpress 8(2022)25www.elsevier.com/locate/icte混合神经编码调制:设计和训练方法Sung Hoon Lima,Jiyong Hana,Wonjong Noha,Yujae Songb,Sang-WoonJeonc,a大韩民国春川,翰林大学软件学院b韩国龟尾国立技术学院计算机软件工程系,邮编39177c大韩民国安山汉阳大学电子电气工程系接收日期:2021年9月30日;接收日期:2021年12月31日;接受日期:2022年1月30日2022年2月9日在线发布摘要提出了一种由内码和外码组成的混合编码调制方案。外码可以是任何标准的二进制具有有效软解码能力的线性码(例如,低密度奇偶校验(LDPC)码)。内部代码使用深度神经网络(DNN)设计,该深度神经网络获取信道编码比特并输出调制符号。为了训练DNN,我们建议使用损失函数,它是受广义互信息的启发。所得到的星座图被示出优于具有5G标准LDPC码的调制�

利用Pandas库进行数据分析与操作

# 1. 引言 ## 1.1 数据分析的重要性 数据分析在当今信息时代扮演着至关重要的角色。随着信息技术的快速发展和互联网的普及,数据量呈爆炸性增长,如何从海量的数据中提取有价值的信息并进行合理的分析,已成为企业和研究机构的一项重要任务。数据分析不仅可以帮助我们理解数据背后的趋势和规律,还可以为决策提供支持,推动业务发展。 ## 1.2 Pandas库简介 Pandas是Python编程语言中一个强大的数据分析工具库。它提供了高效的数据结构和数据分析功能,为数据处理和数据操作提供强大的支持。Pandas库是基于NumPy库开发的,可以与NumPy、Matplotlib等库结合使用,为数

appium自动化测试脚本

Appium是一个跨平台的自动化测试工具,它允许测试人员使用同一套API来编写iOS和Android平台的自动化测试脚本。以下是一个简单的Appium自动化测试脚本的示例: ```python from appium import webdriver desired_caps = {} desired_caps['platformName'] = 'Android' desired_caps['platformVersion'] = '9' desired_caps['deviceName'] = 'Android Emulator' desired_caps['appPackage']

智能时代人机交互的一些思考.pptx

智能时代人机交互的一些思考.pptx

"基于自定义RC-NN的优化云计算网络入侵检测"

⃝可在www.sciencedirect.com在线获取ScienceDirectICTExpress 7(2021)512www.elsevier.com/locate/icte基于自定义RC-NN和优化的云计算网络入侵检测T.蒂拉加姆河ArunaVelTech Rangarajan博士Sagunthala研发科学技术研究所,印度泰米尔纳德邦钦奈接收日期:2020年8月20日;接收日期:2020年10月12日;接受日期:2021年4月20日2021年5月5日网上发售摘要入侵检测是保证信息安全的重要手段,其关键技术是对各种攻击进行准确分类。入侵检测系统(IDS)被认为是云网络环境中的一个重要安全问题。在本文中,IDS给出了一个创新的优化定制的RC-NN(递归卷积神经网络),提出了入侵检测与蚁狮优化算法的基础上。通过这种方法,CNN(卷积神经网络)与LSTM(长短期记忆)混合。因此,利用云的网络层识别的所有攻击被有效地分类。下面所示的实验结果描述了具有高精度的IDS分类模型的呈现,从而�

Shell脚本中的并发编程和多线程操作

# 一、引言 ## 1.1 介绍Shell脚本中并发编程和多线程操作的概念与意义 在Shell编程中,并发编程和多线程操作是指同时执行多个任务或操作,这在处理大规模数据和提高程序执行效率方面非常重要。通过并发编程和多线程操作,可以实现任务的同时执行,充分利用计算资源,加快程序运行速度。在Shell脚本中,也可以利用并发编程和多线程操作来实现类似的效果,提高脚本的执行效率。 ## 1.2 探讨并发编程和多线程在IT领域的应用场景 在IT领域,并发编程和多线程操作被广泛应用于各种场景,包括但不限于: - Web服务器中处理并发请求 - 数据库操作中的并发访问和事务处理 - 大数据处理和分析

极端随机数python

为了生成极端随机数,我们可以使用Python的random模块中的SystemRandom类。SystemRandom类使用操作系统提供的随机源来生成随机数,因此它比random模块中的其他函数更加安全和随机。以下是一个生成极端随机数的例子: ```python import random sys_random = random.SystemRandom() extreme_random_number = sys_random.randint(-9223372036854775807, 9223372036854775807) print("Extreme random number: "